Spring MVC 配置 multipart 解析器 上传文件
2016-11-06 00:00
706 查看
摘要: 学习Spring MVC的过程中,了解了配置multipart解析器,写个笔记记录下来。
#概述
尽管一般表单提交足以满足对典型的基本文本提交,但是当面对传送二进制数据,例如图片,视频等就显得力不从心了。与之不同的是,multipart 格式的数据会将一个表单拆分为多个部分 ,每个部分对应一个输入域。在一般的表单输入域中,它所对应的部分会放置文本型数据,但是如果是上传文件的话,所对应的就是二进制。
###修改表单
首先你得修改你的表单,告诉浏览器以 multipart 数据的形式提交表单,而不是以表单数据的形式提交。
###配置 multipart 解析器
DispatcherServlet 并没有实现任何解析 multipart 请求数据的功能。它将该功能委托给了 MultipartResolver 策略接口的实现,通过这个实现类来解析 multipart 请求中的内容。从Spring 3.1 开始,Spring 内置的两个 MultipartResolver:
CommonsMultipartResolver:使用 Jakarta Commons FileUpload 解析。
StandardServletMultipartResolver : 依赖 Servlet 3.0 对 Multipart 的支持。
配置 StandardServletMultipartResolver
#概述
尽管一般表单提交足以满足对典型的基本文本提交,但是当面对传送二进制数据,例如图片,视频等就显得力不从心了。与之不同的是,multipart 格式的数据会将一个表单拆分为多个部分 ,每个部分对应一个输入域。在一般的表单输入域中,它所对应的部分会放置文本型数据,但是如果是上传文件的话,所对应的就是二进制。
###修改表单
首先你得修改你的表单,告诉浏览器以 multipart 数据的形式提交表单,而不是以表单数据的形式提交。
<form method="POST" enctype="multipart/form-data"> <!--- your form --> </form>
###配置 multipart 解析器
DispatcherServlet 并没有实现任何解析 multipart 请求数据的功能。它将该功能委托给了 MultipartResolver 策略接口的实现,通过这个实现类来解析 multipart 请求中的内容。从Spring 3.1 开始,Spring 内置的两个 MultipartResolver:
CommonsMultipartResolver:使用 Jakarta Commons FileUpload 解析。
StandardServletMultipartResolver : 依赖 Servlet 3.0 对 Multipart 的支持。
StandardServletMultipartResolver
将其声明位Spring上下文中的一个Bean@Bean public MultipartResolver multipartResolver() throws IOException { return new StandardServletMultipartResolver(); }
配置 StandardServletMultipartResolver
public class ZKepsWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { //....other code @Override protected void customizeRegistration(ServletRegistration.Dynamic registration) { //缓存目录 这里可以做很多配置,例如上传文件的大小等 registration.setMultipartConfig(new MultipartConfigElement("/var/local/tmp")); } }
CommonsMultipartResolver
这个配置可以一气呵成@Bean public MultipartResolver multipartResolver() throws IOException{ //同样的 可以配置很多参数 CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(); multipartResolver.setUploadTempDir(new FileSystemResource("/var/local/tmp")); return multipartResolver; }
处理 multipart 请求
Spring 提供了一个 MultipartFile 接口,它为处理multipart 数据提供了内容丰富的对象。所以可以改写你的 Controller了。@RequestMapping(value = "/detailRegister", method = RequestMethod.POST) public String detailRegister(@RequestPart("avator") MultipartFile avator) { //MultipartFile 接口有很多方法,这只是其中一个。 try { avator.transferTo( new File("/var/local/avators/" + avator.getOriginalFilename()) ); } catch (Exception ex) { ex.printStackTrace(); } return "index"; }
相关文章推荐
- SPRING MVC 的 配置 包括 包扫描 视图解析器 文件上传解析器 拦截器等
- SPRING MVC 的 配置 包括 包扫描 视图解析器 文件上传解析器 拦截器等
- spring mvc源码-》MultipartReques类-》主要是对文件上传进行的处理,在上传文件时,编码格式为enctype="multipart/form-data"格式,以二进制形式提交数据,提交方式为post方式。
- spring mvc上传文件Processing of multipart/form-data request failed
- spring mvc基础篇(二):初识视图解析器,核心配置文件的位置,乱码处理
- spring mvc配置上传文件的大小
- SpringMVC 文件上传配置,多文件上传,使用的MultipartFile的实例
- 零xml配置Spring MVC文件上传
- Spring mvc 上传文件,报The current request is not a multipart request
- spring mvc CommonsMultipartResolver文件上传maxUploadSize限制大小
- SpringMVC 文件上传配置,多文件上传,使用的MultipartFile的实例
- spring mvc 配置文件写好后写上传功能
- Spring MVC 的高级配置 - 文件上传配置
- spring mvc CommonsMultipartResolver文件上传maxUploadSize限制大小
- SPRING IN ACTION 第4版笔记-第七章Advanced Spring MVC-003- 上传文件multipart,配置StandardServletMultipartResolver、CommonsMultipartResolver
- spring MVC中CommonsMultipartResolver上传文件大小限制,如何对特定请求进行单独设置?
- 【spring Mvc】SpringMVC 文件上传配置,多文件上传,使用的MultipartFile
- spring mvc multipart文件上传-1
- 【springMVC】解决contextConfigLocation对应的配置文件加了CommonsMultipartResolver上传文件出现404 Not Found的问题
- spring mvc CommonsMultipartResolver文件上传maxUploadSize限制大小