首頁 > 軟體

springboot如何設定上傳檔案的maxRequestSize

2022-03-24 19:00:12

設定上傳檔案的maxRequestSize

springboot設定上傳檔案的maxRequestSize,根據boot版本的不同會 有些差別,設定時,是相當坑的,一不注意就白設了

在application.properties中的設定為

SpringBoot-2.0

spring.servlet.multipart.max-file-size=10Mb
spring.servlet.multipart.max-request-size=100Mb

SpringBoot-1.4

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

SpringBoot-1.4之前

multipart.maxFileSize = 10Mb
multipart.maxRequestSize=100Mb

設定上傳檔案大小的兩種方法

springboot 1.5.X系列處理方式

第一種、直接在springboot的啟動類里加入下面的程式碼。

在設定類中設定@Bean,注意當前設定類上需要加註解@Configuration

/**  
     * 檔案上傳設定  
     * @return  
     */  
    @Bean  
    public MultipartConfigElement multipartConfigElement() {  
        MultipartConfigFactory factory = new MultipartConfigFactory();  
        //檔案最大  
        factory.setMaxFileSize("10240KB"); //KB,MB  
        /// 設定總上傳資料總大小  
        factory.setMaxRequestSize("102400KB");  
        return factory.createMultipartConfig();  
    }  

第二種、在application.properties中新增如下設定資訊

組態檔直接設定,與springboot2.x版本一致

application.properties

    spring.servlet.multipart.max-file-size=20MB
    spring.servlet.multipart.max-request-size=20MB

注意

spring.http.multipart.maxFileSize=10Mb

spring.http.multipart.maxRequestSize=10Mb

已經過期 >>>>

application.yml

    spring:
      servlet:
        multipart:
          max-file-size: 20MB
          max-request-size: 20MB

maxFileSize 是單個檔案大小

maxRequestSize是設定總上傳的資料大小

這就可以了。

根據自己需求定義吧,只能是MB和KB兩種型別,字母大小寫隨意,Long型別可以的

另外這是MultipartConfigFactory類中的轉換,可以瞅一眼

private long parseSize(String size) {  
     Assert.hasLength(size, "Size must not be empty");
        size = size.toUpperCase(Locale.ENGLISH);
        if (size.endsWith("KB")) {
            return Long.valueOf(size.substring(0, size.length() - 2)) * 1024L;
        } else {
            return size.endsWith("MB") ? Long.valueOf(size.substring(0, size.length() - 2)) * 1024L * 1024L : Long.valueOf(size);
        }
  } 

Springboot 2.X系列設定

第一種

在組態檔中新增設定

 @Bean
    public MultipartConfigElement multipartConfigElement() {
        MultipartConfigFactory factory = new MultipartConfigFactory();
        //檔案最大10M,DataUnit提供5中型別B,KB,MB,GB,TB
        factory.setMaxFileSize(DataSize.of(10, DataUnit.MEGABYTES));
        /// 設定總上傳資料總大小10M
        factory.setMaxRequestSize(DataSize.of(10, DataUnit.MEGABYTES));
        return factory.createMultipartConfig();
    }

第二種

組態檔直接設定

application.properties

    spring.servlet.multipart.max-file-size=20MB
    spring.servlet.multipart.max-request-size=20MB

application.yml

    spring:
      servlet:
        multipart:
          max-file-size: 20MB
          max-request-size: 20MB

最後:Tomcat,Nginx等Http伺服器也會對檔案上傳做一定的限制,額,反正具體問題具體分析。以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com