spring boot上傳附件報錯:org.apache.tomcat.util.http.fileupload.FileUploadBase$SizeLimitExceededException 文件過大


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)加入如下代碼

 

  1.  
    spring.http.multipart.maxFileSize = 10Mb
  2.  
    spring.http.multipart.maxRequestSize=100Mb

maxFileSize 單個數據大小

maxRequestSize 是總數據大小

(2)把如下代碼放在啟動類上,並在類上加入@Configuration

 

    1.  
      /**
    2.  
      * 文件上傳配置
    3.  
      *
    4.  
      * @return
    5.  
      */
    6.  
      @Bean
    7.  
      public MultipartConfigElement multipartConfigElement() {
    8.  
      MultipartConfigFactory factory = new MultipartConfigFactory();
    9.  
      // 單個數據大小
    10.  
      factory.setMaxFileSize( "10240KB"); // KB,MB
    11.  
      /// 總上傳數據大小
    12.  
      factory.setMaxRequestSize( "102400KB");
    13.  
      return factory.createMultipartConfig();
    14.  
      }

-----------------------------------------------------------------------

一、錯誤原因

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】配置文件中加入如下代碼:

  1.  
    # maxFileSize 單個數據大小
  2.  
    spring.servlet.multipart.maxFileSize = 10MB
  3.  
    # maxRequestSize 是總數據大小
  4.  
    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注解,且在類中添加一下代碼:

  1.  
    @Bean
  2.  
    public MultipartConfigElement multipartConfigElement() {
  3.  
    MultipartConfigFactory factory = new MultipartConfigFactory();
  4.  
    // 單個數據大小
  5.  
    factory.setMaxFileSize( "102400KB"); // KB,MB
  6.  
    // 總上傳數據大小
  7.  
    factory.setMaxRequestSize( "1024000KB");
  8.  
    return factory.createMultipartConfig();
  9.  
    }

 

3、如有網關,在網關中也加入如上配置


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM