Spring Boot 上传附件报错:org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException【转载 + 整理】

问题现象

在 Spring Boot + Spring Cloud 项目中,上传附件时遇到如下错误:

1
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 (11963927) exceeds the configured maximum (10485760)

从报错信息来看,本质上是上传文件大小超过了 Tomcat 默认限制(默认 1MB)。

解决方案

方案一:在配置文件中直接调整上传大小

在配置文件(application.propertiesapplication.yml)中加入如下配置:

1
2
spring.http.multipart.maxFileSize = 10Mb
spring.http.multipart.maxRequestSize=100Mb

方案二:通过代码方式配置上传限制

把如下代码放在启动类上,并在类上加入 @Configuration

1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
* 文件上传配置
*
* @return
*/
@Bean
public MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
// 单个数据大小
factory.setMaxFileSize("10240KB"); // KB,MB
/// 总上传数据大小
factory.setMaxRequestSize("102400KB");
return factory.createMultipartConfig();
}

我这里最终只修改了配置参数,就解决了问题。

参考资料