Spring之配置 multipartResolver 解析器、上传文件、处理文件
随笔
multipart
格式的数据 会将 一个表单拆分为 多个部分,每个部分对应一个输入域。在一般的表单输入域中,它所对应的部分中会放置文本型数据,但是如果上传文件的话,它所对应的部分可以是二进制。
配置 multipart 解析器:
有两个:
CommonsMultipartResolver
:使用 Jakarta Commons FileUpload 解析 multiparty。StandardServletMultipartResolver
:依赖于 Servlet 3.0 对 multipart 请求的支持。
配置 StandardServletMultipartResolver 解析器
- 在ApplicationContext 中声明为 bean:
@Bean
public MultipartResolver multipartResolver(){return new StandardServletMultipartResolver();
}
- 在 web.xml 或 Servlet 初始化类中,配置 multipart 的具体细节,如:文件大写,临时文件路径等。
- 如果已经实现了 WebApplicationInitializer 接口,可以在Servlet registration 上调用
setMultipartConfig()
方法进行配置:
@Override
public void onStartup(ServletContext servletContext) throws ServletException {DispatcherServlet dispatcherServlet = new DispatcherServlet();ServletRegistration.Dynamic registration = servletContext.addServlet("appServlet", dispatcherServlet);registration.addMapping("/");registration.setMultipartConfig(new MultipartConfigElement("/tmp/uploads"));
}
- 若 初始化 类 继承了
AbstractAnnotationConfigDispatcherServletInitializer
或AbstractDispatcherServletInitializer
通过重写customizeRegistration
方法 来配置multipart
的具体细节
@Override
protected void customizeRegistration(ServletRegistration.Dynamic registration) {registration.setMultipartConfig(new MultipartConfigElement("/tmp/test/uploads"));
}
了解 MultipartConfigElement 类:
new MultipartConfigElement("/tmp/test/uploads",2097152,4194304,0)
- 指定 临时存放目录 为
/tmp/test/uploads
。 - 上传文件的最大容量:
2097152
= 2MB。 - 整个 multipart 请求的最大容量
4194304
= 4MB。 - 文件大写 达到一定容量,会写入 临时文件路径中,默认是 0,所有上传的文件都会写入磁盘中。
对应 在 web.xml 中的配置:
<servlet><servlet-name>appServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><load-on-startup>1</load-on-startup><multipart-config><!-- 临时路劲 --><location>/tmp/test/uploads</location><!-- 上传文件的最大值 --><max-file-size>2097152</max-file-size><!--请求的最大容量--><max-request-size>4194304</max-request-size></multipart-config>
</servlet>
配置 CommonsMultipartResolver 解析器
声明为 bean
@Bean
public MultipartResolver multipartResolver(){return new CommonsMultipartResolver();
}
文件大小,临时路径等在 声明Bean 时设置。
@Bean
public MultipartResolver multipartResolver() throws IOException {CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();// 设置 临时目录multipartResolver.setUploadTempDir(new FileSystemResource("/tmp/test/uploads"));// 最大文件multipartResolver.setMaxUploadSize(2097152);multipartResolver.setMaxInMemorySize(0);return multipartResolver;
}
上传文件、处理文件
表单的大体样式:
<form action="" method="post" enctype="multipart/form-data"><input type="file" name="picture" accept="image/jpeg"><input type="submit" value="提交">
</form>
enctype="multipart/form-data"
告诉 浏览器以 multipart 数据的形式提交表单。accept="image/jpeg"
限制文件接收的类型 为 JPEG。
Controller 上接收上传的文件
@RequestMapping("/upload")
public String uploadImage(@RequestPart("picture")MultipartFile file) throws IOException {// 获取 文件 名String filename = file.getOriginalFilename();// 将 上传的文件 写入到 文件系统中file.transferTo(new File("/data/image"+filename));return "index";
}
- MultipartFile 接口,为处理 multipart 数据提供了内容更为丰富的对象。
public interface MultipartFile extends InputStreamSource {String getName();@NullableString getOriginalFilename();@NullableString getContentType();boolean isEmpty();long getSize();byte[] getBytes() throws IOException;InputStream getInputStream() throws IOException;default Resource getResource() {return new MultipartFileResource(this);}void transferTo(File var1) throws IOException, IllegalStateException;default void transferTo(Path dest) throws IOException, IllegalStateException {FileCopyUtils.copy(this.getInputStream(), Files.newOutputStream(dest));}
}
可以把 MultipartFile 替换为 Servlet.http.Part
@RequestMapping("/upload")
public String uploadImage(@RequestPart("picture") Part file) throws IOException {// 获取 文件 名String filename = file.getSubmittedFileName();// 将 上传的文件 写入到 文件系统中file.write("/data/image"+filename);return "index";
}
通过 Part 参数接收上传文件,那么没有必要 配置 MultipartResolver 了。只有使用 MultipartFile 的时候,才需要 配置。
Spring之配置 multipartResolver 解析器、上传文件、处理文件相关推荐
- Spring Boot配置视图解析器
2019独角兽企业重金招聘Python工程师标准>>> 在SpringBoot中,视图解析器的配置可以参考 Spring Boot数据源配置 #方式一:直接在属性文件中,加入 spr ...
- securecrt 连接配置存放目录_SecureCRT上传和下载文件(下载默认目录)
SecureCR 下的文件传输协议有ASCII .Xmodem .Ymodem .Zmodem ASCII:这是最快的传输协议,但只能传送文本文件. Xmodem:这种古老的传输协议速度较慢,但由于使 ...
- spring多个视图解析器_在Spring中配置多个View解析器
spring多个视图解析器 1.简介 在Spring中,提供了View Resolver来使用模型中可用的数据来解析视图,而无需与JSP,Velocity或Thymeleaf等View技术紧密绑定. ...
- Spring MVC 如何上传多个文件到指定位置
Spring MVC 如何上传多个文件到指定位置 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公 ...
- spring boot 整合 阿里云oss上传
Spring Boot 整合 阿里云OSS上传 OSS申请和配置 1. 注册登录 2.开通以及配置 springboot整合使用 1. 进入我们springboot的项目中,导入oss相关依赖 2. ...
- upload -labs通关解析及上传类型总结和思考
Pass-01(客户端JS绕过) 客户端JS判断方法:上传一个php文件,用bp抓包,如果没抓到包就弹框说不能上传,就说明是客户端JS检测 客户端JS绕过方法: 方法一: 上传一个图片马格式为jpg, ...
- 如何限制上传服务器的文件容量,如何通过配置php文件限制上传文件的大小
在网站开发的过程中,为了确保能够充分利用服务器的空间,在开发上传功能时,必须对上传文件的大小进行控制.那么我们如何进行对上传文件的大小进行控制呢? 控制文件的大小可以从两个方面入手: 第一个是在PHP ...
- ueditor1.4.3配置过程(包含单独上传文件以及图片的使用)
这里使用的是ueditor1.4.3的jsp版本的UTF-8版本. 首先下载相应的ueditor,将ueditor文件夹直接拷贝到项目中,文件结构如下所示: 然后将项目要用的jar包导入到lib目录下 ...
- --------------springMVC的开篇,以及底层执行流程,配置视图解析器,静态资源的访问,流程图,工作原理...
springMVC: 一:创建第一个项目 01.引入需要的jar包 web webmvc context context-support 02.在web.xml文件中 配置我们需要的核心控制器 Dis ...
最新文章
- 7年增长16倍,清华AI+ML课程学生数暴增 | AI Index 2018
- 视频+课件|国内首个基于结构光投影三维重建系列视频课程
- Genymotion 模拟器 VirtualBox
- Js提交表单的两种方法
- synchronized,ReetrantLock与volatile(二)
- Android之百度地图定位最详细使用总结
- LeetCode 965单值二叉树-简单
- python 等待其他线程执行完_面试官:如何让线程顺序执行,join,还有其他办法吗?...
- 数据库练习(二)三个数据库根据指定id获取name和存储数据库名称
- 2017.7.27 bill的挑战 失败总结
- 纯干货分享 | 考PMP留下来的一些重要资料(收藏下载)
- OWASP-安全编码规范
- windows7 《寒江独钓》传统键盘过滤驱动学习
- APP界面设计规范一(ios版)
- 30行代码实现微信朋友圈自动点赞
- C++行为型模式-实现观察者模式
- element-UI日期时间选择器el-date-picker
- 2月第三周域名主机网站排名TOP15 中国万网居首
- workbench无法远程连接
- 直流电压检测线路设计
热门文章
- 第一波开源年报开发者问卷中奖名单新鲜出炉!
- ②号团队【扫黑除恶Team】-团队任务5:项目总结会
- OpenGL---GLUT教程(四) GLUT动画
- 基于皮肤分割的磨皮算法
- 【cocos shader 004】 聚光灯 灯光 烘焙 效果
- excel matlab日期,Excel日期格式在matlab中的转换
- 海洋主题绘画_海底世界创意绘画作品欣赏
- python 3.7安装festtext、提示要更新_现代开发者必备:5个更流畅、更受欢迎的Python web框架...
- 轻松学会linux下查看内存频率,内核函数,cpu频率
- Html5浪漫结婚请柬婚礼网站模板❤_爱她就给她最美的H5婚礼请柬_(婚庆电子邀请函)含背景音乐...