SpringBoot中的multipartResolver上传文件配置
作者:闫-先生 时间:2022-01-22 11:06:51
multipartResolver上传文件配置
1、gradle配置
compile ('commons-io:commons-io:1.4')
compile('commons-fileupload:commons-fileupload:1.2.1')
2、注册Bean
@Bean(name = "multipartResolver")
public MultipartResolver multipartResolver(){
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
resolver.setDefaultEncoding("UTF-8");
//resolveLazily属性启用是为了推迟文件解析,以在在UploadAction中捕获文件大小异常
resolver.setResolveLazily(true);
resolver.setMaxInMemorySize(40960);
//上传文件大小 50M 50*1024*1024
resolver.setMaxUploadSize(50*1024*1024);
return resolver;
}
SpringBoot MultipartResolver的坑
在使用springBoot上传文件的时候,我们会用到MultipartResolver。我看通过源码可以看到
@Configuration
@ConditionalOnClass({ Servlet.class, StandardServletMultipartResolver.class,
MultipartConfigElement.class })
@ConditionalOnProperty(prefix = "spring.http.multipart", name = "enabled", matchIfMissing = true)
@EnableConfigurationProperties(MultipartProperties.class)
public class MultipartAutoConfiguration {
private final MultipartProperties multipartProperties;
public MultipartAutoConfiguration(MultipartProperties multipartProperties) {
this.multipartProperties = multipartProperties;
}
@Bean
@ConditionalOnMissingBean({ MultipartConfigElement.class,
CommonsMultipartResolver.class })
public MultipartConfigElement multipartConfigElement() {
return this.multipartProperties.createMultipartConfig();
}
@Bean(name = DispatcherServlet.MULTIPART_RESOLVER_BEAN_NAME)
@ConditionalOnMissingBean(MultipartResolver.class)
public StandardServletMultipartResolver multipartResolver() {
StandardServletMultipartResolver multipartResolver = new StandardServletMultipartResolver();
multipartResolver.setResolveLazily(this.multipartProperties.isResolveLazily());
return multipartResolver;
}
可以看出MultipartAutoConfiguration配置类,默认加载的是StandardServletMultipartResolver。
然而,我们往往会在项目中加入commons-fileupload依赖,加载的是CommonsMultipartResolver。此时同时使用两个,会产生冲突。
解决方案
1、使用SpringBoot 默认的StandardServletMultipartResolver,不依赖commons-fileupload。
2、使用commons-fileupload的CommonsMultipartResolver,
排除默认
spring:
autoconfigure:
exclude: org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration
自定义文件解析对象
@Bean(name = "multipartResolver")
public MultipartResolver multipartResolver() {
CommonsMultipartResolver resolver = new CommonsMultipartResolver();
resolver.setDefaultEncoding("UTF-8");
return resolver;
}
来源:https://blog.csdn.net/u011110968/article/details/82856736
标签:SpringBoot,multipartResolver,上传文件
0
投稿
猜你喜欢
简单谈一谈Java中的Unsafe类
2021-11-21 00:13:40
Java并发编程之同步容器
2023-03-10 16:34:29
android通过自定义toast实现悬浮通知效果的示例代码
2022-08-11 03:23:54
Android实现微信支付功能
2023-08-04 19:09:03
Spring Boot集成Spring Cache过程详解
2023-08-02 19:20:16
c语言轻松实现猜数字小游戏
2021-10-21 23:42:13
SpringBoot整合Apollo配置中心快速使用详解
2022-12-25 17:00:34
详解Java如何判断ResultSet结果集是否为空
2023-08-22 10:51:14
关于Java中Json的各种处理
2022-06-12 02:37:48
java的package和import机制原理解析
2021-07-20 08:19:05
Java项目中获取路径的绝对路径问题和相对路径问题
2023-07-09 13:25:01
C#读取配置文件的方法汇总
2022-09-13 08:55:35
Java 使用Filter实现用户自动登陆
2022-10-13 13:32:47
Java String 字符串常量池解析
2023-01-08 19:44:05
Java实现整数分解质因数的方法示例
2022-01-27 23:10:04
C#实现简单文本编辑器
2022-04-28 06:42:30
Java并发编程预防死锁过程详解
2023-11-09 15:33:58
C语言数据结构实现银行模拟
2023-04-16 17:25:49
Android快速实现断点续传的方法
2021-06-14 13:02:28
javac final变量未赋值检测案例讲解
2023-09-29 04:25:17