SpringBoot上傳文件大小受限問題的解決辦法
今天在做項目學習的過程中,需要用到文件上傳,啟動項目正常,訪問上傳post請求突然報出了一個異常,特此記錄一下。
1、控制臺異常
org.springframework.web.multipart.MaxUploadSizeExceededException: 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. at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.handleParseFailure(StandardMultipartHttpServletRequest.java:121) at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipartHttpServletRequest.java:114)
從上述異??梢钥闯?,是因為上傳的file文件超過了spring默認配置的最大值1048576 bytes,上傳文件我們通常情況下是使用MultipartFile接口類接收前端上傳的文件,可見對于MultipartFile文件的默認限制也是1048576 bytes,即1M。
但是很多情況下我們用手機直接拍攝的證件照或者是文檔問阿金基本都是在2M以上,很顯然這不能滿足我們的日常需求,所以我們就要修改默認配置參數(shù)大小。
2、上傳文件默認參數(shù)
SpringBoot不同的版本,對應的設置參數(shù)不同:
Spring Boot 1.3.x and earlier
- multipart.maxFileSize
- multipart.maxRequestSize
Spring Boot 1.4.x and 1.5.x
- spring.http.multipart.maxFileSize
- spring.http.multipart.maxRequestSize
Spring Boot 2.x
- spring.servlet.multipart.maxFileSize
- spring.servlet.multipart.maxRequestSize
3、解決方法
3.1、方法1(在配置文件.yml或者.properties中直接修改參數(shù))
例如我使用的是SpringBoot 2.1.3的版本,然后直接再配置文件中設置參數(shù)大?。?/p>
#做限制的參數(shù)配置
spring:
servlet:
multipart:
enabled: true #默認支持文件上傳
max-file-size: 20MB # 最大支持文件大小
max-request-size: 30MB # 最大支持請求大小
#不做限制的參數(shù)配置
spring:
servlet:
multipart:
enabled: true #默認支持文件上傳
max-file-size: -1 #不做限制
max-request-size: -1 #不做限制
設置完重啟項目即可成功上傳文件。
3.2、方法2(自定義config配置類)
將參數(shù)配置在遠程配置文件中心,如果是配置項目中的配置文件中,那就跟方法1一樣了,就沒必要再單獨寫配置類了,將參數(shù)配置在遠程配置中心,就是為了可以根據(jù)臨時需求動態(tài)修改參數(shù),而不用重啟項目。
常見的遠程配置文件中心服務有Nacos、Apollo(阿波羅)、SpringCloud等等,我使用的是Nacos配置中心服務:

自定義MultipartFileConfig配置類:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.MultipartConfigFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.unit.DataSize;
import javax.servlet.MultipartConfigElement;
/**
* @author: 一宿君
* @date: 2022-03-23 19:18:51
* @description:
*/
@Configuration
public class MultipartFileConfig {
@Value("${config.multifile.maxFileSize}")
private Long maxFileSize;
@Value("${config.multifile.maxRequestSize}")
private Long maxRequestSize;
@Bean
public MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
/**
* 單個數(shù)據(jù)大小,
* DataSize.ofMegabytes(maxFileSize)默認是配置字節(jié),將字節(jié)轉化為MB
*/
factory.setMaxFileSize(DataSize.ofMegabytes(maxFileSize));
// 總上傳數(shù)據(jù)大小
factory.setMaxRequestSize(DataSize.ofMegabytes(maxRequestSize));
return factory.createMultipartConfig();
}
}
這樣就可以隨時控制上傳文件的大小了!
總結
到此這篇關于SpringBoot上傳文件大小受限問題解決的文章就介紹到這了,更多相關SpringBoot上傳文件大小受限內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
HashMap紅黑樹入門(實現(xiàn)一個簡單的紅黑樹)
紅黑樹(Red Black Tree) 是一種自平衡二叉查找樹,是在計算機科學中用到的一種數(shù)據(jù)結構,典型的用途是實現(xiàn)關聯(lián)數(shù)組。 紅黑樹發(fā)明時被稱為平衡二叉B樹,后來修改為如今的“紅黑樹”2021-06-06
SpringBoot?實現(xiàn)動態(tài)添加定時任務功能
這篇文章主要介紹了SpringBoot?動態(tài)添加定時任務,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-02-02
Java基礎之FileInputStream和FileOutputStream流詳解
這篇文章主要介紹了Java基礎之FileInputStream和FileOutputStream流詳解,文中有非常詳細的代碼示例,對正在學習java基礎的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04
Sentinel實現(xiàn)動態(tài)配置的集群流控的方法
這篇文章主要介紹了Sentinel實現(xiàn)動態(tài)配置的集群流控,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04
使用Spring源碼報錯java:找不到類 InstrumentationSavingAgent的問題
這篇文章主要介紹了使用Spring源碼報錯java:找不到類 InstrumentationSavingAgent的問題,本文給大家分享解決方法,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10
Spring Boot實現(xiàn)數(shù)據(jù)訪問計數(shù)器方案詳解
在Spring Boot項目中,有時需要數(shù)據(jù)訪問計數(shù)器,怎么實現(xiàn)數(shù)據(jù)訪問計數(shù)器呢?下面小編給大家?guī)砹薙pring Boot數(shù)據(jù)訪問計數(shù)器的實現(xiàn)方案,需要的朋友參考下吧2021-08-08

