Spring Boot上传大Excel报multipart/form-data请求失败问题咨询
异常触发原因
你遇到的EOFException是Tomcat读取上传请求数据流时,未读完完整请求就触发了连接断开导致的。你已经正确配置了spring.servlet.multipart相关的文件大小上限,所以不是文件大小超出限制的问题,核心原因就是当前server.tomcat.connection-timeout=5000(5秒)的配置,不足以支撑大文件的完整传输时长,文件还没传完Tomcat就主动断开了空闲连接。
你尝试配置的server.tomcat.disable-upload-timeout和server.connectionUploadTimeout确实为无效配置,这两个不属于Spring Boot 2.5.x版本支持的内置配置项,因此IDE会标红提示。
可行解决方法
- 最简单的调整是直接调大连接超时时长:根据你的实际网络传输速度,把
server.tomcat.connection-timeout调整为足够覆盖最大文件上传耗时的数值,比如预计50MB文件最长需要30秒传输,就改为30000即可。 - 如果需要完全禁用上传场景的超时限制,可以通过自定义Tomcat配置类实现,不需要修改配置文件,新增如下配置类即可:
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; import org.springframework.boot.web.server.WebServerFactoryCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class TomcatConfig { @Bean public WebServerFactoryCustomizer<TomcatServletWebServerFactory> tomcatCustomizer() { return factory -> factory.addConnectorCustomizers(connector -> { // 关闭上传超时限制 connector.setDisableUploadTimeout(true); }); } }
- 额外优化:如果经常需要传输几十MB的大文件,可以在配置文件中增加如下配置,将超出阈值的上传文件先写入临时磁盘,降低内存占用过高的风险:
spring.servlet.multipart.file-size-threshold=10MB
你现有的排查方向完全正确,调整后即可解决大文件上传报错的问题。
内容的提问来源于stack exchange,提问作者tony montana
相关产品推荐
相关产品推荐

