Spring MVC文件上传
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring MVC文件上传相关的知识,希望对你有一定的参考价值。
1.Spring MVC文件上传简介
在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参数对象,该对象包含了上传的文件信息。
public String upload(@RequestParam(value="file",required = false)MultipartFile file,
HttpServletRequest request,ModelMap model){
//TODO将file文件对象保存到指定目录下
}
5.限制文件上传大小
CommonsMultipartResolver解析器可以设置对上传文件大小的限定,配置示例如下
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="102400"/>
</bean>
当设置了maxUploadSize大小限制后,如果上传文件大于指定大小,会抛出MaxUploadSizeExceededException异常,可以采用异常处理给客户显示友好提示。
在处理上传的Controller组件中定义@ExceptionHandler异常处理方法
@ExceptionHandler
public Model doException(Exception ex){
if(ex instanceof MaxUploadSizeExceededException){
long size = ((MaxUploadSizeExceededException)ex).getMaxUploadSize();
model.put("errors","文件应小于"+size+"字节 ");
}else{
model.put("errors","未知错误:"+ex.getMessage());
}
return new ModelAndView("upload",model);
}
提示:
CommonsMultipartResolver的resolveLazily属性指定为true,将文件解析延迟,才能触发上面的异常处理。
以上是关于Spring MVC文件上传的主要内容,如果未能解决你的问题,请参考以下文章