SpringBoot上传文件大小受限问题怎么解决
1、控制台异常org.springframework.web.multipart.MaxUploadSizeExceededException:Maximumuploadsizeexceeded;nestedexceptionisjava.lang.IllegalStateException:org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException:Thefieldfileexceedsitsm
1、控制台异常
org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 1048576 bytes. at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.handleParseFailure(StandardMultipartHttpServletRequest.java:121) at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipartHttpServletRequest.java:114)
从上述异常可以看出,是因为上传的file文件超过了spring默认配置的最大值1048576 bytes,上传文件我们通常情况下是使用MultipartFile接口类接收前端上传的文件,可见对于MultipartFile文件的默认限制也是1048576 bytes,即1M。
但是很多情况下我们用手机直接拍摄的证件照或者是文档问阿金基本都是在2M以上,很显然这不能满足我们的日常需求,所以我们就要修改默认配置参数大小。
2、上传文件默认参数
SpringBoot不同的版本,对应的设置参数不同:
Spring Boot 1.3.x and earlier
multipart.maxFileSize
multipart.maxRequestSize
Spring Boot 1.4.x and 1.5.x
spring.http.multipart.maxFileSize
spring.http.multipart.maxRequestSize
Spring Boot 2.x
spring.servlet.multipart.maxFileSize
spring.servlet.multipart.maxRequestSize
3、解决方法
3.1、方法1(在配置文件.yml或者.properties中直接修改参数)
例如我使用的是SpringBoot 2.1.3的版本,然后直接再配置文件中设置参数大小:
#做限制的参数配置 spring: servlet: multipart: enabled: true #默认支持文件上传 max-file-size: 20MB # 最大支持文件大小 max-request-size: 30MB # 最大支持请求大小 #不做限制的参数配置 spring: servlet: multipart: enabled: true #默认支持文件上传 max-file-size: -1 #不做限制 max-request-size: -1 #不做限制
设置完重启项目即可成功上传文件。
3.2、方法2(自定义config配置类)
将参数配置在远程配置文件中心,如果是配置项目中的配置文件中,那就跟方法1一样了,就没必要再单独写配置类了,将参数配置在远程配置中心,就是为了可以根据临时需求动态修改参数,而不用重启项目。
常见的远程配置文件中心服务有Nacos、Apollo(阿波罗)、SpringCloud等等,我使用的是Nacos配置中心服务:

自定义MultipartFileConfig配置类:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.MultipartConfigFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.unit.DataSize;
import javax.servlet.MultipartConfigElement;
/**
* @author: 一宿君
* @date: 2022-03-23 19:18:51
* @description:
*/
@Configuration
public class MultipartFileConfig {
@Value("${config.multifile.maxFileSize}")
private Long maxFileSize;
@Value("${config.multifile.maxRequestSize}")
private Long maxRequestSize;
@Bean
public MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
/**
* 单个数据大小,
* DataSize.ofMegabytes(maxFileSize)默认是配置字节,将字节转化为MB
*/
factory.setMaxFileSize(DataSize.ofMegabytes(maxFileSize));
// 总上传数据大小
factory.setMaxRequestSize(DataSize.ofMegabytes(maxRequestSize));
return factory.createMultipartConfig();
}
}这样就可以随时控制上传文件的大小了!
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















