如何使用 spring mvc3 上传文件?
How to upload file using 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
所以请帮助我
像这样:
@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>
上传功能取决于几个因素。由于 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 接口
插入模拟实现
我想上传文件并使用 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
所以请帮助我
像这样:
@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>
上传功能取决于几个因素。由于 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 接口
插入模拟实现