【发布时间】:2015-01-08 12:47:51
【问题描述】:
我的 JSP 表单上有一个文件选择器,如下所示:
<input type="file" name="file" id="file"/>
当我选择上传文件时,它会通过 @RequestParam 向控制器发送 MultipartFile:
@RequestParam("file") MultipartFile file
但是我怎样才能将这个文件恢复到同一个视图中呢?
我尝试将model.addAttribute("file", file) 放在控制器上,但它不起作用。
最好的问候,
已编辑。
我有以下 Bean:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" >
<property name="maxUploadSize" value="100000000"></property>
</bean>
【问题讨论】:
-
文件字段不会保留其值,afaik 这是不可能的。
-
见下面 Jordi 的回答。您需要创建一个 POJO bean,其中包含 MultipartFile 文件属性/ivar。在接受 MultipartFile 的 POJO 中创建一个构造函数。使用此构造函数在控制器方法中实例化 POJO。顺便问一下,你在用视图做什么?您是将其传递到工作流中,还是打算在页面中使用它?
-
@DanTheLion 我尝试了 Jordi 的方式,我创建了 POJO,
File现在可以通过@ModelAttribute('formName')从View获取,但它只是不会发生,文件不在@ModelAttribute中。我打算在页面中使用它。 -
一旦您在控制器方法中使用 Multipart 文件(写入数据库等),您将如何处理它?我试图了解预期的应用程序行为。这将有助于我正确回答您的问题。
-
太好了,感谢您提供详细信息。您将如何使用页面上的文件?只显示名称和大小?您将需要编写一个将文件保存到数据库的方法。此方法应将 MultipartFile 作为 arg。该方法的返回可以是一个 POJO 视图,其中包含文件名、大小和页面所需的任何其他详细信息。最后,将此视图添加到模型中。希望这会有所帮助。
标签: java spring jsp multipartform-data