我有一个表单,我同时向后端发送几个(比如10个)文件,以及其他一些常规输入字段。
当我在后端发现验证问题时,我再次显示表单并填写常规输入(下拉列表,文本输入等),但我无法填写文件字段,强制用户从文件中选择文件目录再次。
我想到的解决方案是发送文件的base64编码表示,并将它们放回到表单中,以防出现验证错误,但我想知道是否有更简单的方法。
答案 0 :(得分:2)
无论您做什么,都不能跳过服务器端验证。出于安全原因(例如,有人发送原始请求)。至于在出现错误(或简单重新加载)的情况下显示文件,我会将其作为Base64发送,但如果文件很大则通过AJAX发送。
希望它有所帮助!
答案 1 :(得分:0)
最简单的事情是:
1)验证客户端的所有字段(javascript / jquery)
2)验证所有其他输入后,您将发送文件。
注意:如果需要在服务器端验证某些值,请对步骤(1)和(2)使用ajax。此外,尝试提供更多细节以获得高质量的答案
答案 2 :(得分:0)
我会为上传的文件创建一个临时存储,并且只返回从商店获得的唯一难以猜测的ID而不是整个文件。
单个文件上传的表单部分将包含一个带有唯一文件ID的隐藏输入。
处理请求时:如果请求中有文件,则获取文件(如果表单无效则存储),否则,如果有文件ID,则从商店获取文件。