Spring 6(Tomcat 10)下无法提升Multipart文件上传上限求助
问题解决:Spring 6 + Tomcat 10 文件上传上限无法提升至10MB
核心问题定位
你的配置存在拼写错误,导致Tomcat的表单POST大小限制未被正确覆盖,同时需确认Tomcat全局Connector配置是否存在额外限制。
具体修正步骤
1. 修复application.properties中的拼写错误
原配置中server.tomcatmax-http-form-post-size=-1缺少分隔点,导致该配置未生效,Tomcat使用默认的表单POST大小限制(约2MB,因编码等因素实际表现为1.5MB)。修正为:
spring.servlet.multipart.max-file-size=10485760 spring.servlet.multipart.max-request-size=10485760 spring.servlet.multipart.file-size-threshold=10485760 server.tomcat.max-swallow-size=-1 server.tomcat.max-http-form-post-size=-1
2. 检查Tomcat server.xml的Connector配置
确保server.xml中的<Connector>标签未设置maxHttpFormPostSize,或显式设置为-1(无限制):
<Connector port="9443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxHttpFormPostSize="-1" <!-- 其他原有配置 --> />
该配置会覆盖context.xml和Spring的相关设置,必须确保其限制值大于等于你的目标大小(10MB)。
3. 移除Controller上的@MultipartConfig(推荐)
由于你使用Spring的StandardServletMultipartResolver,Controller上的@MultipartConfig注解配置会被Spring的全局multipart配置覆盖,保留它只会造成配置混淆,建议直接移除:
@Controller // 移除@MultipartConfig注解 public class YourController { // 原有代码 }
4. 验证配置加载
启动应用后,在日志中搜索multipart关键字,确认Spring已正确加载配置,例如日志会输出类似:
Multipart properties: max-file-size=10MB, max-request-size=10MB, file-size-threshold=10MB
原因说明
Tomcat的maxHttpFormPostSize默认限制约为2MB,当你的配置因拼写错误未生效时,超过该大小的请求会被Tomcat直接拦截,此时Spring的multipart配置尚未生效,因此出现MaxUploadSizeExceededException。修正后Tomcat不再限制表单POST大小,Spring的10MB限制会正常生效。
内容的提问来源于stack exchange,提问作者Kit Kline
相关产品推荐
相关产品推荐

