Spring mvc multipart文件上传

时间:2017-05-25 20:37:34

标签: spring-mvc file-upload multipartform-data

我在Spring MVC应用程序中看到了很多关于stackoverflow关于多部分文件上传问题的答案。 我一步一步地确保我不会重复别人的错误。

这是我的表格

<form class="form-horizontal" data-toggle="validator"
                        id="track_existing_repair"
                        method="post"
                        action="/euo/testUpload.htm"
                        enctype="multipart/form-data">

...
        <div class="form-group required">
                        <label class="control-label col-sm-4" for="proofOfPurchaseInput">Select File:</label>
                        <div class="col-sm-8">
                        <input  name="proofOfPurchase" 
                            id="proofOfPurchaseInput" 
                            type="file" 
                            required/>
                    </div>
                </div>
...
</form>

在pom文件中我有依赖

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.2</version>
</dependency>

在app-servlet.xml中声明了multipartResolver

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- max upload size in bytes -->
        <property name="maxUploadSize" value="20971520" /> <!-- 20MB -->
        <!-- max size of file in memory (in bytes) -->
        <property name="maxInMemorySize" value="1048576" /> <!-- 1MB -->
</bean>

映射到Controller类中的请求的方法

@RequestMapping(value = {"/testUpload"},headers = "Content-Type=multipart/form-data", method = RequestMethod.POST)
public String testUpload( 
            @RequestPart(value = "proofOfPurchase", required = false) MultipartFile proofOfPurchaseFile
            ,HttpServletRequest request
            ) throws InvalidFormatException, IOException {
if(proofOfPurchaseFile !=  null){
    readFile(proofOfPurchaseFile);
}
return NAV_HOME;
}
  • 我尝试了 @RequestParam 而不是@RequestPart

  • 没有 required = false 我有&#34; 必需的请求部分 &#39; proofOfPurchase&#39;不存在&#34;响应,所以我做了不需要 只是为了在调试器中检查请求

因此,当我在调试器中停止时,我并不感到惊讶,请求对象显示我已收到文件,甚至存储在jBoss临时文件夹中。

request object

你能否指出一下我可以错过Spring无法看到上传文件的内容?

1 个答案:

答案 0 :(得分:0)

问题出现在我们也使用Struts的遗留项目中。 事实证明,struts调度程序与Spring CommonsMultipartResolver存在某种冲突。

一旦我从web.xml中删除了所有struts servlet和过滤器,一切都开始工作了。