Spring Boot 2.0.0.M6 和文件上传超过 10 MB

Posted

技术标签:

【中文标题】Spring Boot 2.0.0.M6 和文件上传超过 10 MB【英文标题】:Spring Boot 2.0.0.M6 and file upload more than 10 MB 【发布时间】:2018-06-06 06:56:30 【问题描述】:

在我的 Spring Boot 2.0.0.M6 application.properties 中,我添加了以下几行:

spring.http.multipart.max-file-size=100MB 
spring.http.multipart.max-request-size=100MB

但是当我尝试将 21MB 文件上传到我的 RestController 时,它会失败并出现以下异常:

Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (21112803) exceeds the configured maximum (10485760)

我在使用 Spring Boot 打包的 Embedded Tomcat 上运行我的应用程序。

如何正确配置我的应用程序以允许上传最大 100MB 的文件?

【问题讨论】:

【参考方案1】:

如the documentation和its appendix所示,正确的属性是spring.servlet.multipart.max-file-sizespring.servlet.multipart.max-request-size

【讨论】:

如果底层网络服务器是Tomcat,你也必须设置这个:server.tomcat.max-http-form-post-size=100MB【参考方案2】:

对于 SpringBoot 1.5.7 到 2.1.2 或之前的版本,需要在 application.properties 文件中设置的属性是:

spring.http.multipart.max-file-size=100MB
spring.http.multipart.max-request-size=100MB

还要确保“resources”文件夹中有 application.properties 文件。如果您不确定大小,那么“-1”就是值。

【讨论】:

【参考方案3】:
spring.servlet.multipart.max-file-size=1000MB
spring.servlet.multipart.max-request-size=1000MB


spring.http.multipart.max-file-size=50MB
spring.http.multipart.max-request-size=50MB

以上两种方式在我的版本(1.3.4)中也不起作用,

所以我使用了以下方式并且它正在工作,

multipart.enabled=true
multipart.max-file-size=100MB
multipart.max-request-size=100MB

【讨论】:

【参考方案4】:

对于 Spring boot 版本 2.4.3 及此版本之后使用此

spring.servlet.multipart.max-file-size=-1 spring.servlet.multipart.max-request-size=-1

【讨论】:

以上是关于Spring Boot 2.0.0.M6 和文件上传超过 10 MB的主要内容,如果未能解决你的问题,请参考以下文章

NoSuchBeanDefinitionException:PlatformTransactionManager 在 Spring Boot 2.0.0.M6 中运行 Junit 测试

史上最全面的Spring Boot配置文件详解

在 tomcat 上部署 Spring Boot WAR 文件显示错误 404

记spring boot线上项目内存优化

Spring Boot Admin - 系统错误中打开的文件过多

在不同端口上注册 Spring Boot Servlet