我在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临时文件夹中。
你能否指出一下我可以错过Spring无法看到上传文件的内容?
答案 0 :(得分:0)
问题出现在我们也使用Struts的遗留项目中。 事实证明,struts调度程序与Spring CommonsMultipartResolver存在某种冲突。
一旦我从web.xml中删除了所有struts servlet和过滤器,一切都开始工作了。