我想上传文件并使用Spring MVC3进行处理。我试过
@RequestMapping(value = "uploadAction.do")
public ModelAndView upload(
@RequestParam("file") CommonsMultiPartFile file
)
{
System.out.println(file);
ModelAndView view = new ModelAndView();
return view;
}
但它不起作用,我与@RequestParam
和@ModelAttribute
混淆了所以请帮帮我
答案 0 :(得分:2)
上传功能取决于多种因素。正如docs所示,以下是您必须确保的事项
发出POST请求。文件上传应该是POST请求
@RequestMapping(value = "uploadAction.do", method=RequestMethod.POST)
通过向Web应用程序的上下文添加多部分解析程序来启用Spring多部分处理
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- one of the properties available; the maximum file size in bytes -->
<property name="maxUploadSize" value="100000"/>
</bean>
确保 commons-fileupload.jar 在您的类路径中,如果您正在使用maven,则以下内容应该为您提供
<!-- File Upload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.0.1</version>
</dependency>
完成所有这些后,您的映射应该可以正常工作,前提是您的表单没问题,这是一个示例
<form id="fileuploadForm" action="/uploadAction.do" method="POST" enctype="multipart/form-data" class="cleanform">
<input id="file" type="file" name="file" />
<p><button type="submit">Upload</button></p>
</form>
另请注意,通过将参数类型更改为
,通常可以更好地对接口进行编程public ModelAndView upload(@RequestParam("file") MultipartFile file) {
您将委托将实施注入框架。好处是你可以使用spring mvc测试框架编写文件上传测试,在这种情况下,框架将插入 MultipartFile 接口的模拟实现
答案 1 :(得分:0)
这样的事情:
@RequestMapping(value="/upload", method=RequestMethod.POST)
public String upload( @RequestParam("upload")
MultipartFile multipartFile
...
){
....
}
并且格式为enctype:
<form id="command" name="command" method="POST" action="/upload" enctype="multipart/form-data">
....
<input id="upload" type="file" name="photo">
....
</form>