如何在表单验证错误中“保留”上传的图像?

Posted

技术标签:

【中文标题】如何在表单验证错误中“保留”上传的图像?【英文标题】:How can I "keep" the uploaded image on a form validation error? 【发布时间】:2011-09-06 03:27:55 【问题描述】:

我有一个表单,其中包含 FileField 以及其他字段。想象一下,用户选择了一个文件,按下提交,另一个字段触发了 ValidationError。 当我取回表单时,页面上有错误,用户为文件字段选择的内容已经消失。我可以让它出现吗,还是浏览器的问题?

【问题讨论】:

【参考方案1】:

这是一个浏览器问题 - 出于安全原因,您不能预先填充文件输入,否则很容易诱骗用户在没有明确操作的情况下从他们的系统上传文件。

【讨论】:

所以,每次,如果你犯了一个错误(客户端验证不会发现),你就必须重新上传? 如果有字段需要服务器端验证(比如检查是否取用户名),为什么不使用ajax来验证呢? @Daniel Roseman,为了避免再次上传文件,我们能做的最小的改变是什么?我从来没有这样做过,但是由于我们可以将上传的文件保存在服务器中(通过将其从临时目录移动到其他地方),因此我们可以通过某种方式将上次试用期间上传的文件与用户在下次试用期间上传的文件相关联正确填写表单而没有任何验证错误?如果我们能以某种方式做到这一点,我们会考虑文件已经上传并相应地处理它。

以上是关于如何在表单验证错误中“保留”上传的图像?的主要内容,如果未能解决你的问题,请参考以下文章

在 Rails 6 中使用 activestorage 时,如何在重新显示表单时保留文件?

数据当用户在验证失败(Python,Django)时被重定向回表单时如何保留表单?

阻止表单提交但保留表单验证

Symfony 4.4:为图像文件上传保留的实体/模型属性由表单系统设置更新(结果始终为空 - 没有错误)

活动存储:表单重新显示时保留/缓存上传文件的最佳实践

如何使用 jQuery 验证用户正在使用 HTML 表单上传文件?