2015-02-23 86 views
1

我想通过使用Spring MVC3上传文件并进行处理。我试着用如何使用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

看看[这里](http://stackoverflow.com/ questions/20162474/how-do-i-receive-a-file-upload-in-spring-mvc-using-both-multipart-form-and-chunk) – 2015-02-23 09:13:22

回答

2

上传功能取决于se素质因素。如docs所示,以下是您必须确保的事项

发出POST请求。上传文件应该是一个POST请求

@RequestMapping(value = "uploadAction.do", method=RequestMethod.POST) 

春季启用分段处理通过添加一个multipart解析器到web应用程序的上下文

 <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> 

确保公地fileupload.jar是你的classpath,如果你正在使用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界面

+0

Thanks,It works for me – 2015-02-23 11:40:05

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>