上传文件出现413 Request Entity Too Large问题
SpringBoot项目中需要上传文件,突然出现当文件大于1MB时,接口完全无法访问的情况,打开Fiddler,接口直接报红,说明根本就没有进入到接口。
那么出现这种问题的原因是什么了?多方查阅资料和结合实际情况,才发现是公司换了服务器,使用了Nginx,运维人员又没有做相应的配置,这样Nginx默认最大能够上传1MB文件,大于1MB的文件自然无法上传。
解决方案如下:
打开nginx.conf(没权限找运维人员)在http{ }中设置:client_max_body_size 50m,即:
client_max_body_size 50M
重启Nginx即可。当做完这些依然无效时,请检查网关(zuul)是否对文件上传也做了限制。
##打开自定义以配置
spring.http.multipart.enabled=true
##最大单文件限制
spring.http.multipart.max-file-size=50MB
##总上传的数据大小
spring.http.multipart.max-request-size=50MB
重启网关(不重启没效果),依然不起作用,继续检查Spring或者SpringBoot的配置, 如果出现
org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field pic exceeds its maximum permitted size of 1048576 bytes.
org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field pic exceeds its maximum permitted size of 1048576 bytes.
因为springboot内置tomact的的文件传输默认为1MB,大于1MB的文件是无法上传的,加入配置(我的SpringBoot版本为1.5.6)
#配置开启,打开自定义
spring.http.multipart.enabled =true
##可以不要
spring.http.multipart.file-size-threshold =0
#最大单文件限制小
spring.http.multipart.max-file-size = 50MB
#总数据的大小
spring.http.multipart.max-request-size=50MB
Springboot 2.0之后的版本,需要改变:
#单文件限制大小
spring.servlet.multipart.max-file-size = 50MB
#总文件限制的大小
spring.servlet.multipart.max-request-size=50MB
总结
文件无法上传大概就只有以下四个方面的原因
- 服务器对上传文件带下做了限制(Nginx,Apache,IIS等服务器,文中仅对Nginx配置做了说明)
- 网关对上传文件大小做了限制,此时添加配置即可。
- SpringBoot/Spring对上传文件大小做了限制,添加配置即可。
- 文件确实过大,前后端链接超时,自动断开链接(可自己设置,不做详述)
上一篇: Caused by: java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment
下一篇: thymeleaf 404报错:There was anunexpected error (type=Not Found, status=404).
推荐阅读
-
413 Request Entity Too Large
-
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
-
HTTP 413 request Entity too Large
-
http:413 Request Entity Too Large
-
Nginx 出现 413 Request Entity Too Large
-
NodeJS 413 request entity too large 暴力解决方案
-
413 Request Entity Too Large
-
上传文件出现413 Request Entity Too Large问题
-
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
-
413 Request Entity Too Large