标签:
因为文件上传这样的工作一般来说是开发人员自定的,所以Spring默认是不处理multipart请求的。但Spring为multipart做了些通用的支持性工作。
Form元素的enctype必须是multipart/form-data。
处理multipart请求需要一个MultipartResolver:
<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, commons-io.jar文件。
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
有两种方式可以获取上传的文件:
1. 使用@RequestPart:
@RequestMapping(method =RequestMethod.POST, value="multipart")
public ModelAndView source(@RequestPart("file")MultipartFile file) {
ModelAndView mav= new ModelAndView();
…
return mav;
}
2. 使用@RequestParam:
以上传一个XML文件为例:
@RequestMapping(method =RequestMethod.POST)
public ModelAndView post(@RequestPart("file")MultipartFile xmlFile) throws IOException {
ModelAndViewmav = new ModelAndView();
mav.setViewName("request/upload");
mav.addObject("originalName",xmlFile.getOriginalFilename());
mav.addObject("name",xmlFile.getName());
mav.addObject("contentType",xmlFile.getContentType());
mav.addObject("fileSize",xmlFile.getSize());
if(!xmlFile.isEmpty()) {
// 把上传的文件保存到指定目录,并重新指定文件名。
FilenewFile = new File("d:/upload/upload.xml");
xmlFile.transferTo(newFile);
}
return mav;
}
这两种方式的效果是一样的,只是@RequestPart只能获取文件,如果去获取字符处键值对会报错。
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/woxueliuyun/article/details/48175657