https://blog.csdn.net/fxj0720/article/details/80255651
https://www.freesion.com/article/9245162331/
實際解決這個問題是在站點的bootstrap.yml上添加如下配置
spring:
servlet:
multipart:
enabled: true
max-file-size: 5Mb
max-request-size: 5Mb
---------------------------------------------
以下是粘貼復制
---------------------------------------------
org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException: the request was rejected because its size (11963927) exceeds the configured maximum (10485760)
項目使用的是Spring Boot + Spring Cloud,上傳附件報超出自帶tomacat限制大小(默認1M)
解決辦法:
(1)在配置文件(application.properties)加入如下代碼
-
spring.http.multipart.maxFileSize = 10Mb
-
spring.http.multipart.maxRequestSize=100Mb
maxFileSize 單個數據大小
maxRequestSize 是總數據大小
(2)把如下代碼放在啟動類上,並在類上加入@Configuration
-
/**
-
* 文件上傳配置
-
*
-
* @return
-
*/
-
-
public MultipartConfigElement multipartConfigElement() {
-
MultipartConfigFactory factory = new MultipartConfigFactory();
-
// 單個數據大小
-
factory.setMaxFileSize( "10240KB"); // KB,MB
-
/// 總上傳數據大小
-
factory.setMaxRequestSize( "102400KB");
-
return factory.createMultipartConfig();
-
}
-----------------------------------------------------------------------
一、錯誤原因
springboot項目在上傳較大文件時報錯:
Maximum upload size exceeded;org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 1048576 bytes.
報錯的原因是:springBoot項目自帶的tomcat對上傳的文件大小有默認的限制,SpringBoot官方文檔中展示:每個文件的配置最大為1Mb,單次請求的文件的總數不能大於10Mb。
二、解決方法
知道了是tomcat的默認設置限制了上傳的文件大小,那我們只需要改變默認設置即可。
1、在【APPLICATION.PROPERTIES】配置文件中加入如下代碼:
-
-
spring.servlet.multipart.maxFileSize = 10MB
-
-
spring.servlet.multipart.maxRequestSize= 100MB
有兩點要注意:
(1)這里“10MB”不能寫成“10Mb”,否則會報另一個錯,如下:
(2)SpringBoot的版本不同,這兩個配置語句也不一樣,具體版本對應如下:
- Spring Boot 1.3 版本:
multipart.maxFileSize
- Spring Boot 1.4 版本和 1.5 版本:
spring.http.multipart.maxFileSize
- Spring Boot 2.0 版本:
spring.servlet.multipart.maxFileSize
2、在啟動類上加上@CONFIGURATION注解,且在類中添加一下代碼:
-
-
public MultipartConfigElement multipartConfigElement() {
-
MultipartConfigFactory factory = new MultipartConfigFactory();
-
// 單個數據大小
-
factory.setMaxFileSize( "102400KB"); // KB,MB
-
// 總上傳數據大小
-
factory.setMaxRequestSize( "1024000KB");
-
return factory.createMultipartConfig();
-
}