今天和大家分析一下 上传文件报错 问题解决:
一、错误场景描述:上传文件接口一直都很正常,突然有一天生成环境上传 报错,接口都没有进入控制层,一看报错日志,发现好像和文件大小有关,核心日志如下:
org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (18363980) exceeds the configured maximum (10485760)
二、分析结果:项目使用的是Spring Boot / Spring Cloud,上传文件报超出自带tomacat限制大小(默认1M);同时springMVC或struts框架也是这种限制,即也会遇到同样问题,举一反三。
三、解决办法:
方案1、在配置文件(application.properties)加入如下配置
#单个文件数据大小限制
spring.http.multipart.maxFileSize = 20Mb
#每次上传总数据大小限制
spring.http.multipart.maxRequestSize=100Mb
方案2、配置代码放在springBoot启动类里,即启动时初始化此对象的配置
/**
* 文件上传配置
* @return
*/
@Bean
public MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
// 单个数据大小
factory.setMaxFileSize("20MB"); // KB,MB
/// 总上传数据大小
factory.setMaxRequestSize("100MB");
return factory.createMultipartConfig();
}
两种方案任选其一,均可解决线上问题。