问题描述
Springboot默认的上传文件大小限制为1MB,默认单次请求大小为10MB,超出限制会报错:
MaxUploadSizeExceededException
解决方法
- 如果配置文件是application.properties格式,则添加以下代码:
spring.servlet.multipart.max-file-size = 50MB
spring.servlet.multipart.max-request-size = 50MB
server.tomcat.max-swallow-size = 100MB # 最重要的是这一行
- 如果配置文件是application.yml格式,则添加以下代码:
spring:
servlet:
multipart:
max-file-size: 50MB
max-request-size: 50MB
tomcat:
max-swallow-size: 100MB #最重要的是这行
注意:
注意上面最重要的是要配置内嵌的 tomcat 的最大吞吐量即 max-swallow-size,可以设置 -1 不限制,也可以设置一下比较大的数字这里微酷设置 100M。当上传文件超 tomcat 的大小限制后会先于 Controller 触发异常,所以这时我们的异常处理类无法捕获 Controller 层的异常。这样当上传文件超大小限制后就可以被全局异常处理类捕获了。
- 备注:
我在实际中,使用了第二种方式,并且在nginx配置文件中加入了文件大小限制。尚不确定是否问题的解决办法也跟nginx上传文件大小限制配置项有关,有待后续深入研究,暂且记录至此。