html - 保留 <form :input type ="file"> with Spring MVC 的值

标签 html spring spring-mvc file-upload

我有一个包含两个输入的表单:一个字符串,一个文件。

<form:form ...>
  <form:input type="text" ....>
  <form:input type="file" ....>
</form:form>

如果字符串输入验证失败, Controller 将路由回同一 View 。发生这种情况时,字符串字段会保留,但所选文件会丢失。

有没有办法在重新渲染 View 时保留选择的文件?

认为答案是否定的 - 它是 HTML 文件输入的固有特性,而不是服务器端框架。询问我是否遗漏了什么。

最佳答案

确实是文件输入值无法保存。这就像在所有浏览器中实现的一样。据我所知,它与潜在的安全风险有关,但我从未深入探讨过。

虽然有可能实现类似的目标。这是我们在项目中所做的:

  • 每个带有 fileupload 的表单都有一个 UUID,只要输入无效,该 UUID 就不会更改。
  • 我们在这些编辑阶段使用 FineUploader 异步上传文件,这些文件上传到一个以这个 uuid 作为文件夹名的文件夹
  • 我们维护隐藏的输入(文本)并引用当前上传
  • 如果没有绑定(bind)结果错误,我们会以一种方法处理文件,并在完成后删除上传文件夹
  • 如果出现错误,我们会保留 uuid 并维护输入字段,这样我们就不会丢失引用。

这现在工作稳定,作为一个很好的副作用, Controller 在某种程度上更容易编写,在我看来也更容易编写,因为我们不再需要这些表单的 multipart,而另一个 Controller 只处理上传。

编辑: - 您可能想要实现一个 cronjob 来清除放弃的上传!

关于html - 保留 <form :input type ="file"> with Spring MVC 的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15510807/

相关文章:

html - 如何在 FF 或 IE 中打印背景图像?

php - 如何解决php功能错误?

java - 使用 Spring 4 和 AngularJS 摆脱第一个 View Controller

javascript - 监控 JavaScript 输出,例如 console.log()

php - 将数据库结果分类

java - spring data jpa复合键重复键记录插入导致更新

java - 使用 Spring Security 的 SiteMinder 注销

java - 尝试插入空值时 mybatis 与 spring 出错

java - RequestMapping 类级别和方法级别之间的继承

java - 没有可用于配置选项的 Java 编译器 compilerClassName : [null] and compiler: [null]