記一次在公司工作中踩得坑,項目使用的是Spring Boot(2.1.3RELEASE) + Spring Cloud,是以很自然我們必須考慮檔案上傳時,檔案大小設定的問題,是以配置方法網上有很多,常見的為兩種,一種通過在配置檔案(我的是application.yml),另外一種就是在啟動類上添加配置,廢話不多說直接上配置:
第一種配置方法(application.yml)
SpringBoot2.0.x版本的配置方法:
servlet:
multipart:
enabled: true
max-file-size: 30MB
max-request-size: 30MB
SpingBoot1.5.x版本的配置方法:
spring:
http:
multipart:
max-file-size: 10MB
max-request-size: 10MB
enabled: true
可以前往Springboot官網進行查詢學習。
第二種配置方法(@Configuration)
在application啟動類上加上配置
/**
* 檔案上傳配置
*
* @return
*/
@Bean
public MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
// 單個資料大小
factory.setMaxFileSize("30MB"); // KB,MB
/// 總上傳資料大小
factory.setMaxRequestSize("30MB");
return factory.createMultipartConfig();
}
最容易忽略的坑
如果通過上面的配置完成之後,還是報錯 Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field file exceeds its maximum permitted size of 1048576 bytes.
是不是感覺很納悶,配置大小檔案資訊我們已經有了呀,為什麼還是不行呢?
這個時候我們就要想一下了,若是有網關之類的中轉,需在網關中也加入如上配置 ,而我遇到的坑就是忘記了給網關zuul同時配置上上面的配置資訊。慘痛疏忽