SpringBoot上傳文件大小受限問(wèn)題的解決辦法
今天在做項(xiàng)目學(xué)習(xí)的過(guò)程中,需要用到文件上傳,啟動(dòng)項(xiàng)目正常,訪問(wèn)上傳post請(qǐng)求突然報(bào)出了一個(gè)異常,特此記錄一下。
1、控制臺(tái)異常
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)
從上述異??梢钥闯?,是因?yàn)樯蟼鞯膄ile文件超過(guò)了spring默認(rèn)配置的最大值1048576 bytes,上傳文件我們通常情況下是使用MultipartFile接口類接收前端上傳的文件,可見(jiàn)對(duì)于MultipartFile文件的默認(rèn)限制也是1048576 bytes,即1M。
但是很多情況下我們用手機(jī)直接拍攝的證件照或者是文檔問(wèn)阿金基本都是在2M以上,很顯然這不能滿足我們的日常需求,所以我們就要修改默認(rèn)配置參數(shù)大小。
2、上傳文件默認(rèn)參數(shù)
SpringBoot不同的版本,對(duì)應(yīng)的設(shè)置參數(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è)置參數(shù)大?。?/p>
#做限制的參數(shù)配置 spring: servlet: multipart: enabled: true #默認(rèn)支持文件上傳 max-file-size: 20MB # 最大支持文件大小 max-request-size: 30MB # 最大支持請(qǐng)求大小 #不做限制的參數(shù)配置 spring: servlet: multipart: enabled: true #默認(rèn)支持文件上傳 max-file-size: -1 #不做限制 max-request-size: -1 #不做限制
設(shè)置完重啟項(xiàng)目即可成功上傳文件。
3.2、方法2(自定義config配置類)
將參數(shù)配置在遠(yuǎn)程配置文件中心,如果是配置項(xiàng)目中的配置文件中,那就跟方法1一樣了,就沒(méi)必要再單獨(dú)寫配置類了,將參數(shù)配置在遠(yuǎn)程配置中心,就是為了可以根據(jù)臨時(shí)需求動(dòng)態(tài)修改參數(shù),而不用重啟項(xiàng)目。
常見(jiàn)的遠(yuǎn)程配置文件中心服務(wù)有Nacos、Apollo(阿波羅)、SpringCloud等等,我使用的是Nacos配置中心服務(wù):
自定義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(); /** * 單個(gè)數(shù)據(jù)大小, * DataSize.ofMegabytes(maxFileSize)默認(rèn)是配置字節(jié),將字節(jié)轉(zhuǎn)化為MB */ factory.setMaxFileSize(DataSize.ofMegabytes(maxFileSize)); // 總上傳數(shù)據(jù)大小 factory.setMaxRequestSize(DataSize.ofMegabytes(maxRequestSize)); return factory.createMultipartConfig(); } }
這樣就可以隨時(shí)控制上傳文件的大小了!
總結(jié)
到此這篇關(guān)于SpringBoot上傳文件大小受限問(wèn)題解決的文章就介紹到這了,更多相關(guān)SpringBoot上傳文件大小受限內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- springboot大文件上傳、分片上傳、斷點(diǎn)續(xù)傳、秒傳的實(shí)現(xiàn)
- Springboot上傳文件時(shí)提示405問(wèn)題及排坑過(guò)程
- SpringBoot實(shí)現(xiàn)文件上傳與下載功能的示例代碼
- SpringBoot整合Minio實(shí)現(xiàn)上傳文件的完整步驟記錄
- Java全面深入探究SpringBoot攔截器與文件上傳
- SpringBoot整合MinIO實(shí)現(xiàn)文件上傳的方法詳解
- springboot如何配置上傳文件的maxRequestSize
- SpringBoot簡(jiǎn)單實(shí)現(xiàn)文件上傳
相關(guān)文章
HashMap紅黑樹(shù)入門(實(shí)現(xiàn)一個(gè)簡(jiǎn)單的紅黑樹(shù))
紅黑樹(shù)(Red Black Tree) 是一種自平衡二叉查找樹(shù),是在計(jì)算機(jī)科學(xué)中用到的一種數(shù)據(jù)結(jié)構(gòu),典型的用途是實(shí)現(xiàn)關(guān)聯(lián)數(shù)組。 紅黑樹(shù)發(fā)明時(shí)被稱為平衡二叉B樹(shù),后來(lái)修改為如今的“紅黑樹(shù)”2021-06-06SpringBoot?實(shí)現(xiàn)動(dòng)態(tài)添加定時(shí)任務(wù)功能
這篇文章主要介紹了SpringBoot?動(dòng)態(tài)添加定時(shí)任務(wù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02Java基礎(chǔ)之FileInputStream和FileOutputStream流詳解
這篇文章主要介紹了Java基礎(chǔ)之FileInputStream和FileOutputStream流詳解,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下2021-04-04Sentinel實(shí)現(xiàn)動(dòng)態(tài)配置的集群流控的方法
這篇文章主要介紹了Sentinel實(shí)現(xiàn)動(dòng)態(tài)配置的集群流控,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04使用Spring源碼報(bào)錯(cuò)java:找不到類 InstrumentationSavingAgent的問(wèn)題
這篇文章主要介紹了使用Spring源碼報(bào)錯(cuò)java:找不到類 InstrumentationSavingAgent的問(wèn)題,本文給大家分享解決方法,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10Spring Boot實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)計(jì)數(shù)器方案詳解
在Spring Boot項(xiàng)目中,有時(shí)需要數(shù)據(jù)訪問(wèn)計(jì)數(shù)器,怎么實(shí)現(xiàn)數(shù)據(jù)訪問(wèn)計(jì)數(shù)器呢?下面小編給大家?guī)?lái)了Spring Boot數(shù)據(jù)訪問(wèn)計(jì)數(shù)器的實(shí)現(xiàn)方案,需要的朋友參考下吧2021-08-08