前提:上传文件过程中需要在XML中加入以下配置
<!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"/>
<!-- 指定所上传文件的总大小不能超过200KB。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->
<property name="maxUploadSize" value="20000"/>
</bean>
<!-- 这种是跳转页面方式的错误提示,还有另一种自定义处理方式-->
<!-- SpringMVC在超出上传文件限制时,会抛出org.springframework.web.multipart.MaxUploadSizeExceededException -->
<!-- 该异常是SpringMVC在检查上传的文件信息时抛出来的,而且此时还没有进入到Controller方法中 -->
<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<!-- 遇到MaxUploadSizeExceededException异常时,自动跳转到error.jsp页面 -->
<prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">error</prop>
</props>
</property>
<!-- 还有下面的状态码方式
<property name="statusCodes">
<props>
<prop key=""></prop>
</props>
</property>
-->
</bean>
方式一:MultipartFile
/**
* @RequestParam(value="myfiles") 这里必须使用RequestParam绑定才能获取文件
* @param file
*/
@RequestMapping(value="/upload.do")
public void upload1(@RequestParam(value="myfiles") MultipartFile[] file){
for(MultipartFile mf :file){
//mf.getBytes();
//mf.getInputStream();
System.out.println(mf.getOriginalFilename() +" "+mf.getContentType());
}
}
方式二:MultipartHttpServletRequest/**
* 转型为MultipartHttpRequest
* @param request
*/
@RequestMapping(value="/upload2.do")
public void upload2(HttpServletRequest request){
// 转型为MultipartHttpRequest
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
// 获得文件 multipartRequest.getFile("");
List<MultipartFile> fileList = multipartRequest.getFiles("myfiles");
for(MultipartFile mf : fileList){
}
}
注:需要用到两个依赖包,commons-fileupload-1.2.2.jar commons-io-2.1.jar。文件上传过大的错误提示,上述配置文件是跳转页面方式,如果采用的是ajax方式上传,需要使用另一种异常处理。详情 见这篇文章http://blog.youkuaiyun.com/lwphk/article/details/39500569