spring boot报FileSizeLimitExceededException异常的解决方法
开发spring boot程序时,遇到了如下错误:
The field file exceeds its maximum permitted size of 1048576 bytes.
原因:
Spring Boot工程嵌入的tomcat限制了请求的文件大小,官方文档中这样描述:
Spring Boot embraces the Servlet 3 javax.servlet.http.Part API to support uploading files. By default Spring Boot configures Spring MVC with a maximum file of 1Mb per file and a maximum of 10Mb of file data in a single request.
翻译一下:每个文件的最大为1Mb,单次请求的文件的总数不能大于10Mb。
解决方法:
spring boot 2.0 之后,在配置文件application.yaml或 application.properties中增加如下配置:
spring.servlet.multipart.max-file-size=100MB
spring.servlet.multipart.max-request-size=1000MB
如果想不让文件大小受限,将spring.servlet.multipart.max-file-size这个参数设置成-1。
SpringBoot 之设置文件上传大小限制
问题:
SpringBoot默认上传文件大小不能超过1MB,超过之后会报以下异常:
org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 1048576 bytes.
解决方法:
第一种解决方案:
增加Bean配置,注意当前类上需要加注解@Configuration,不然扫不到就不会起作用了;一般配置放在启动类中就可以。
/**
* 文件上传配置
* @return
*/
@Bean
public MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
//文件最大
factory.setMaxFileSize("10240KB"); //KB,MB
/// 设置总上传数据总大小
factory.setMaxRequestSize("102400KB");
return factory.createMultipartConfig();
}
第二种解决方案:
在配置文件(application.properties/application.yml)中加入如下设置即可:
# 单个文件大小(Mb和Kb都可以)
spring.servlet.multipart.maxFileSize=30MB
# 总上传的数据大小
spring.servlet.multipart.maxRequestSize=30MB
SpringBoot 2.X版本
application.properties
# 单个文件的最大值
spring.servlet.multipart.max-file-size = 1Mb
# 上传文件总的最大值
spring.servlet.multipart.max-request-size = 10Mb
application.yml
spring:
servlet:
multipart:
enabled: true
max-file-size: 1MB # 单个文件的最大值
max-request-size: 10MB # 上传文件总的最大值
SpringBoot 1.5.X版本
Application启动类上添加 @Bean
/**
* 文件上传配置
* @return
*/
@Bean
public MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
//设置单个文件的最大值
factory.setMaxFileSize("1MB"); //KB,MB
/// 设置上传文件总的最大值
factory.setMaxRequestSize("10MB");//KB,MB
return factory.createMultipartConfig();
}
注:不知道为什么 SpringBoot1.5.x 版本的在配置文件上配置不生效,反正我是测试了不行,不知道是不是我自己的问题,望知道的大牛告知下。
相关文章
- spring boot自动配置原理面试题_Spring boot面试
- Spring 全家桶之 Spring Security(二)
- Spring Boot 实现接口幂等性的 4 种方案
- Spring Cloud Tencent 1.7 版本最新发布
- Spring Boot 中使用@KafkaListener并发批量接收消息[通俗易懂]
- Spring-boot_Spring Boot
- 烧脑巨作,Spring Boot请求处理(常用参数注解使用)
- spring boot 和mybatis整合打印sql语句
- spring boot 2.x 整合mybaits及分页插件
- 导致Spring事务失效的原因有哪些?
- 【Spring Boot实战与进阶】集成Kafka消息队列
- Spring Boot 构建多租户系统 实现动态切换数据源
- Spring获取Bean的9种方式
- springspring boot拷贝实体的工具类---BeanObjectCopyUtils
- Spring Boot的单元测试(概念)
- 只会用 Spring Boot 创建微服务?这 4 种替代方案了解一下!
- Spring Cloud Security配置OAuth2客户端来访问受保护的API
- Spring Cloud Bus集成Spring Cloud Config Server实现全局配置的自动刷新(二)
- Spring Boot中使用MongoDB数据库的方法
- Spring Boot中使用MongoDB数据库的方法
- Spring声明式事务管理与配置介绍详解编程语言
- Spring Boot全局支持CORS(跨源请求)的配置方法详解编程语言
- Spring Boot国际化开发实战详解编程语言
- spring Boot(十九):使用Spring Boot Actuator监控应用详解编程语言
- Spring Boot(十五):spring boot+jpa+thymeleaf增删改查示例详解编程语言
- Spring Boot(十二):spring boot如何测试打包部署详解编程语言
- Spring Boot 2.x :通过 spring-boot-starter-hbase 集成 HBase
- 春日之城:使用Neo4j进行图数据库管理(spring neo4j)