1. 程式人生 > >上傳大小配置

上傳大小配置

數據 -type substr tco exc 啟動 pro cat -c

SpringBoot文件上傳大小設置問題

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
       <property name="maxUploadSize" value="104857600"/>  
       <property name="maxInMemorySize" value="4096"/>  
   </bean>

這是以前上傳文件時一種比較常見的設置上傳文件大小的方法,但由於spring-boot自帶org.springframework.web.multipart.MultipartFile

的原因,配置這個bean後會產生沖突,以至於在後臺獲取不到上傳的文件

解決方法:

第一種:
在application.properties中添加:

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

老版本的話添加:

multipart.maxFileSize=128KB
multipart.maxRequestSize=128KB

其中:
maxFileSize 是單個文件大小
maxRequestSize是設置總上傳的數據大小
原理-》MultipartConfigFactory類中的轉換如下:

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

第二種:
在啟動類中配置@Bean,註意當前類上需要加註解@Configuration,如下:

@Configuration  
@SpringBootApplication  
public class Application { 
    public static void main(String[] args) throws Exception {  
        SpringApplication.run(Application.class, args);  
    }  
    /**  
     * 文件上傳配置  
     * @return  
     */  
    @Bean  
    public MultipartConfigElement multipartConfigElement() {  
        MultipartConfigFactory factory = new MultipartConfigFactory();  
        //文件最大  
        factory.setMaxFileSize("10240KB"); //KB,MB  
        /// 設置總上傳數據總大小  
        factory.setMaxRequestSize("102400KB");  
        return factory.createMultipartConfig();  
    }  
} 

此外:Tomcat,Nginx等也會對文件上傳做一定的限制,具體問題具體分析。

上傳大小配置