保持价值 使用Spring MVC
问题内容:
我有一个带有两个输入的表单:一个字符串,一个文件。
<form:form ...>
<form:input type="text" ....>
<form:input type="file" ....>
</form:form>
如果对字符串输入的验证失败,则控制器将路由回到该同一视图。发生这种情况时,字符串字段将保留,但所选文件将丢失。
重新渲染视图时,是否可以保留所选文件?
我 认为 答案是否定的-这是HTML文件输入所固有的,而不是服务器端框架。询问是否有我想念的东西。
问题答案:
确实不能保留文件输入值。就像在所有浏览器中实现的一样。据我所知,它与潜在的安全风险有关,但我从不深入。
虽然有可能实现类似的目标。这是我们在项目中所做的:
- 每个具有fileupload的表单都有一个UUID,只要输入无效,它就不会更改。
- 在这些编辑阶段,我们使用FineUploader异步上传文件,然后将其上传到以该uuid作为文件夹名的文件夹
- 我们会通过引用当前上传内容来维护隐藏的输入(文字)
- 如果没有bindingresult错误,我们将使用方法处理文件,如果未完成,则删除上传文件夹
- 如果有错误,我们将uuid保留在适当的位置并维护输入字段,因此我们不会丢失引用。
它现在可以稳定运行,并且作为一个很好的副作用,该控制器以某种方式更容易使用,并且在我眼中,它也更易于编写,因为我们不再需要这些表格的多部分内容,而另一个控制器仅在处理上传内容。
编辑:-您可能要实施cronjob来清除被遗弃的上传!