如何使用spring mvc3上传文件?

时间:2015-02-23 09:09:03

标签: java spring spring-mvc file-upload

我想上传文件并使用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混淆了所以请帮帮我

2 个答案:

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