验证错误后保留表单文件

时间:2016-12-16 10:53:37

标签: html forms multipartform-data

我有一个表单,我同时向后端发送几个(比如10个)文件,以及其他一些常规输入字段。

当我在后端发现验证问题时,我再次显示表单并填写常规输入(下拉列表,文本输入等),但我无法填写文件字段,强制用户从文件中选择文件目录再次。

我想到的解决方案是发送文件的base64编码表示,并将它们放回到表单中,以防出现验证错误,但我想知道是否有更简单的方法。

3 个答案:

答案 0 :(得分:2)

无论您做什么,都不能跳过服务器端验证。出于安全原因(例如,有人发送原始请求)。至于在出现错误(或简单重新加载)的情况下显示文件,我会将其作为Base64发送,但如果文件很大则通过AJAX发送。

  1. 客户端验证:大多数验证(如果不是全部)都可以使用普通JS完成。无论是文件大小,内容类型......还是根据文件类型(图像,文档...)
  2. 进行更具体的验证
  3. 服务器端验证:发送后,完全验证文件和内容。
  4. 发回文件:如果出现错误,请发送带有请求的文件(如果小)。如果大通过AJAX发送它们以避免阻塞并且快速保持页面加载时间。
  5. 希望它有所帮助!

答案 1 :(得分:0)

最简单的事情是:

1)验证客户端的所有字段(javascript / jquery)

2)验证所有其他输入后,您将发送文件。

注意:如果需要在服务器端验证某些值,请对步骤(1)和(2)使用ajax。此外,尝试提供更多细节以获得高质量的答案

答案 2 :(得分:0)

我会为上传的文件创建一个临时存储,并且只返回从商店获得的唯一难以猜测的ID而不是整个文件。

单个文件上传的表单部分将包含一个带有唯一文件ID的隐藏输入。

处理请求时:如果请求中有文件,则获取文件(如果表单无效则存储),否则,如果有文件ID,则从商店获取文件。