标签:
1、SpringMVC文件上传简介
在SpringMVC中,文件上传功能可以由即插即用的CommonsMultipartResolver解析器组件实现,它定义在org.springframework.web.multipart包里。Spring提供的CommonsMultipartResolver解析器可以支持Commons FileUpload和COS FileUpload两种上传组件。
2、CommonsMultipartResolver组件
CommonsMultipartResolver解析器组件可以调用common-fileUpload.jar的功能,将请求提交的文件信息解析出来,该组件使用步骤如下
引入common-fileupload.jar和common-io.jar开发包
在Spring配置文件中添加CommonsMultipartResolver组件的bean定义
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
3、视图表单实现
在JSP视图表单中,<form>标记必须追加enctype="multipart/form-data"设置,指定表单数据的提交格式。默认情况,提交格式是application/x-www-form-urlencoded,不能用于文件上传;必须使用multipart/form-data设置才可以。
method属性也必须设置为post方式提交
4、Controller实现
在Controller处理方法中,可以使用@RequestParam注解将CommonsMultipartResolver解析出的文件赋值给MultipartFile参数对象,该对象包含了上传的文件信息。
@RequestMapping(value="/upload.form)
public String upload(@RequestParam(value="file",required=false)MultipartFile file,HttpServletRequest request,ModelMap model){
//TODO将file文件对象保存到指定目录下
}
5、限制上传文件大小
CommonsMultipartResoler解析器可以设置对上传文件的大小的限定,配置示例如下
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="51200"></property>
</bean>
当设置了maxUploadSize大小限制后,如果上传文件大于指定指定大小,会抛出MaxUploadSizeExceededException异常,可以采用异常处理给客户显示友好提示。
在处理上传的Controller组件中定义@ExceptionHandler异常处理方法
@ExceptionHandler异常处理
@ExceptionHandler
public ModelAndView doException(Exception ex){
Map<String,Object> model=new HashMap<String,Object>();
if(ex instanceof MaxUploadSizeExeededException){
long size=((MaxUploadSizeExceededException)ex).getMaxUploadSize();
model.put("errors","文件应小于"+size+"字节");
}else{
model.put("error","未知错误:"+ex.getMessage());
}
return new ModelAndView("upload",model);
}
提示:CommonsMultipartResolver的resolveLazily属性指定为true,将文件解析延迟,才能触发上面的异常处理。
6、
标签:
原文地址:http://www.cnblogs.com/Crow00/p/4547887.html