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-size
和spring.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 测试
在 tomcat 上部署 Spring Boot WAR 文件显示错误 404