问题:100多兆文件上传时报错
现象:在做内网穿透到外网服务器时,对于137M的文件上传报错,但是37.246M的可以
具体报错信息:
org.apache.tomcat.util.http.fileupload.impl.SizeLimitExceededException: the request was rejected because its size (143150319) exceeds the configured maximum (104857600)
at....
问题分析:
内到外网请求(内网->代理服务器应用(下面用A替代)->nginx->外网测试应用(下面用B替代)),一开始就排除了nginx,因为nginx设置了可以传200M,那么有可能是A和B应用有限制,查看日志后发现A果然报错了,改完A的配置后;发现还是报错了,这次是B,出现和A一样的报错信息。
解决问题:
在代理服务器应用(delagate- in2out.jar)和外网测试应用(gateway-new-in-0.0.1-SNAPSHOT.jar)都加了如下配置,然后解决问题
spring:
servlet:
multipart:
max-file-size: 1000MB
max-request-size: 20000MB
总结:文件上传超出默认大小
当设置Spring Boot应用程序中的文件上传大小时,需要关注两个主要方面:Tomcat服务器的配置和Spring的multipart配置。
1. Tomcat服务器的配置
在application.yml(或application.properties)中,可以通过以下配置设置Tomcat服务器的最大HTTP FORM POST请求大小:
server:
port: 8802
tomcat:
max-http-form-post-size: 1000MB
这里的 max-http-form-post-size 属性用于设置最大的HTTP FORM POST请求大小,包括文件上传在内。
2. Spring的multipart配置
另一方面,如果想要设置Spring的multipart相关的上传文件大小,可以通过以下配置:
spring:
servlet:
multipart:
max-file-size: 1000MB
max-request-size: 20000MB
这里的max-file-size 用于设置单个文件的最大大小,而 max-request-size 用于设置总上传的文件大小。