验证错误后保留表单文件
Keep form files after validation error
我有一个表单,可以同时向后端发送多个(比如说 10 个)文件以及其他一些常规输入字段。
当我在后端发现验证问题时,我再次显示表单并填写常规输入(下拉菜单、文本输入等),但我无法填写文件字段,迫使用户 select 文件目录中的文件。
我想到的解决方案是发送文件的base64编码表示,然后将它们放回表单中以防验证错误,但我想知道是否有更简单的方法。
最简单的做法是:
1) 在客户端验证所有字段(javascript/jquery)
2) 一旦所有其他输入都通过验证,您就可以发送文件。
注意:如果您需要在服务器端验证某些值,请对步骤 (1) 和 (2) 使用 ajax。另外,尽量提供更多细节以获得高质量的答案
无论做什么,都不能跳过服务器端验证。出于安全原因(例如有人发送原始请求)。至于在出现错误(或简单重新加载)的情况下显示文件,我会将其作为 Base64 发送,但如果文件很大,则通过 AJAX 发送。
- 客户端验证:大多数验证(如果不是全部)可以使用纯 JS 完成。无论是文件大小、内容类型……还是根据文件类型(图像、文档……)进行更具体的验证
- 服务器端验证:发送后,全面验证文件和内容。
- 发回文件:如果出现错误,请将请求的文件小的发回。如果大,请通过 AJAX 发送它们以避免阻塞并保持页面加载速度快。
希望对您有所帮助!
我会为上传的文件创建一个临时存储,并且只会发回从存储中获得的 unique-hard-to-guess ID 而不是整个文件。
单个文件上传的表单部分还将包含一个隐藏的输入,其中包含唯一的 file-ID。
处理请求时:如果请求中有文件,则获取文件(如果表单无效,则存储它)否则,如果有 file-ID 从存储中获取文件。
我有一个表单,可以同时向后端发送多个(比如说 10 个)文件以及其他一些常规输入字段。
当我在后端发现验证问题时,我再次显示表单并填写常规输入(下拉菜单、文本输入等),但我无法填写文件字段,迫使用户 select 文件目录中的文件。
我想到的解决方案是发送文件的base64编码表示,然后将它们放回表单中以防验证错误,但我想知道是否有更简单的方法。
最简单的做法是:
1) 在客户端验证所有字段(javascript/jquery)
2) 一旦所有其他输入都通过验证,您就可以发送文件。
注意:如果您需要在服务器端验证某些值,请对步骤 (1) 和 (2) 使用 ajax。另外,尽量提供更多细节以获得高质量的答案
无论做什么,都不能跳过服务器端验证。出于安全原因(例如有人发送原始请求)。至于在出现错误(或简单重新加载)的情况下显示文件,我会将其作为 Base64 发送,但如果文件很大,则通过 AJAX 发送。
- 客户端验证:大多数验证(如果不是全部)可以使用纯 JS 完成。无论是文件大小、内容类型……还是根据文件类型(图像、文档……)进行更具体的验证
- 服务器端验证:发送后,全面验证文件和内容。
- 发回文件:如果出现错误,请将请求的文件小的发回。如果大,请通过 AJAX 发送它们以避免阻塞并保持页面加载速度快。
希望对您有所帮助!
我会为上传的文件创建一个临时存储,并且只会发回从存储中获得的 unique-hard-to-guess ID 而不是整个文件。
单个文件上传的表单部分还将包含一个隐藏的输入,其中包含唯一的 file-ID。
处理请求时:如果请求中有文件,则获取文件(如果表单无效,则存储它)否则,如果有 file-ID 从存储中获取文件。