【问题标题】:Problems to keep a `MultipartFile` in a View using Spring使用 Spring 在视图中保留“MultipartFile”的问题
【发布时间】: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


【解决方案1】:

你有一个助手类或一个bean?如果不是,我认为您必须创建它...然后只需添加一个新的 MultipartFile 属性及其 getters/setters:

MultipartFile document;

// getters & setters!!

然后在视图中:

<form:input path ="document" type="file" name="Your file"/>

【讨论】:

    【解决方案2】:

    在方法中包含HttpServletResponse响应并将文件内容写入响应(正确定义mime类型。

    public void processUpload(@RequestParam MultipartFile file,
                                HttpServletResponse resp) {
        resp.setContentType(yourTypeHere + "; charset=UTF-8");
        resp.setHeader("Content-Disposition", "attachment; filename=\"" 
        + theFileName + "\"");
    
        IOUtils.copy(new TheInputStreamFromTheFile(), resp.getOutputStream());
    

    【讨论】:

      猜你喜欢
      • 2014-12-11
      • 1970-01-01
      • 2013-06-09
      • 1970-01-01
      • 2017-07-24
      • 1970-01-01
      • 2022-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多