Spring boot MultipartResolver
springboot默认文件解析器为StandardServletMultipartResolver 、配置文件解析器为CommonsMultipartResolver
实现了 MultipartResolver 常用接口有两个:
一个是 CommonsMultipartResolver:使用Jakarta Commons FileUpload 解析 multipart 请求;
一个是 StandardServletMultipartResolver:依赖于 Servlet 3.0 解析 multipart 请求;
1.排除默认配置
spring:
autoconfigure:
exclude: org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration
或
@EnableAutoConfiguration(exclude = {MultipartAutoConfiguration.class})
2.依赖
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
3.创建文件解析对象
@Slf4j
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Bean(name = "multipartResolver")
public MultipartResolver multipartResolver() {
log.info("Loading the multipart resolver");
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;
}
}