您好,登錄后才能下訂單哦!
本文小編為大家詳細(xì)介紹“SpringBoot上傳文件大小受限如何解決”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“SpringBoot上傳文件大小受限如何解決”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識(shí)吧。
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文件超過了spring默認(rèn)配置的最大值1048576 bytes,上傳文件我們通常情況下是使用MultipartFile接口類接收前端上傳的文件,可見對于MultipartFile文件的默認(rèn)限制也是1048576 bytes,即1M。
但是很多情況下我們用手機(jī)直接拍攝的證件照或者是文檔問阿金基本都是在2M以上,很顯然這不能滿足我們的日常需求,所以我們就要修改默認(rèn)配置參數(shù)大小。
SpringBoot不同的版本,對應(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
例如我使用的是SpringBoot 2.1.3的版本,然后直接再配置文件中設(shè)置參數(shù)大?。?/p>
#做限制的參數(shù)配置 spring: servlet: multipart: enabled: true #默認(rèn)支持文件上傳 max-file-size: 20MB # 最大支持文件大小 max-request-size: 30MB # 最大支持請求大小 #不做限制的參數(shù)配置 spring: servlet: multipart: enabled: true #默認(rèn)支持文件上傳 max-file-size: -1 #不做限制 max-request-size: -1 #不做限制
設(shè)置完重啟項(xiàng)目即可成功上傳文件。
將參數(shù)配置在遠(yuǎn)程配置文件中心,如果是配置項(xiàng)目中的配置文件中,那就跟方法1一樣了,就沒必要再單獨(dú)寫配置類了,將參數(shù)配置在遠(yuǎn)程配置中心,就是為了可以根據(jù)臨時(shí)需求動(dòng)態(tài)修改參數(shù),而不用重啟項(xiàng)目。
常見的遠(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í)控制上傳文件的大小了!
讀到這里,這篇“SpringBoot上傳文件大小受限如何解決”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。