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
  • asp之家 软件编程 m.aspxhome.com