SpringBoot中的multipartResolver上傳文件配置
multipartResolver上傳文件配置
1、gradle配置
compile ('commons-io:commons-io:1.4') compile('commons-fileupload:commons-fileupload:1.2.1')
2、注冊Bean
@Bean(name = "multipartResolver") public MultipartResolver multipartResolver(){ CommonsMultipartResolver resolver = new CommonsMultipartResolver(); resolver.setDefaultEncoding("UTF-8"); //resolveLazily屬性啟用是為了推遲文件解析,以在在UploadAction中捕獲文件大小異常 resolver.setResolveLazily(true); resolver.setMaxInMemorySize(40960); //上傳文件大小 50M 50*1024*1024 resolver.setMaxUploadSize(50*1024*1024); return resolver; }
SpringBoot MultipartResolver的坑
在使用springBoot上傳文件的時候,我們會用到MultipartResolver。我看通過源碼可以看到
@Configuration @ConditionalOnClass({ Servlet.class, StandardServletMultipartResolver.class, MultipartConfigElement.class }) @ConditionalOnProperty(prefix = "spring.http.multipart", name = "enabled", matchIfMissing = true) @EnableConfigurationProperties(MultipartProperties.class) public class MultipartAutoConfiguration { private final MultipartProperties multipartProperties; public MultipartAutoConfiguration(MultipartProperties multipartProperties) { this.multipartProperties = multipartProperties; } @Bean @ConditionalOnMissingBean({ MultipartConfigElement.class, CommonsMultipartResolver.class }) public MultipartConfigElement multipartConfigElement() { return this.multipartProperties.createMultipartConfig(); } @Bean(name = DispatcherServlet.MULTIPART_RESOLVER_BEAN_NAME) @ConditionalOnMissingBean(MultipartResolver.class) public StandardServletMultipartResolver multipartResolver() { StandardServletMultipartResolver multipartResolver = new StandardServletMultipartResolver(); multipartResolver.setResolveLazily(this.multipartProperties.isResolveLazily()); return multipartResolver; }
可以看出MultipartAutoConfiguration配置類,默認加載的是StandardServletMultipartResolver。
然而,我們往往會在項目中加入commons-fileupload依賴,加載的是CommonsMultipartResolver。此時同時使用兩個,會產生沖突。
解決方案
1、使用SpringBoot 默認的StandardServletMultipartResolver,不依賴commons-fileupload。
2、使用commons-fileupload的CommonsMultipartResolver,
排除默認
spring: autoconfigure: exclude: org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration
自定義文件解析對象
@Bean(name = "multipartResolver") public MultipartResolver multipartResolver() { CommonsMultipartResolver resolver = new CommonsMultipartResolver(); resolver.setDefaultEncoding("UTF-8"); return resolver; }
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
如何自定義feign調用實現(xiàn)hystrix超時、異常熔斷
這篇文章主要介紹了自定義feign調用實現(xiàn)hystrix超時、異常熔斷的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06使用springboot整合mybatis-plus實現(xiàn)數(shù)據(jù)庫的增刪查改示例
這篇文章主要介紹了使用springboot整合mybatis-plus實現(xiàn)數(shù)據(jù)庫的增刪查改示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04Java開發(fā)實例之圖書管理系統(tǒng)的實現(xiàn)
圖書管理的功能大體包括:增加書籍、借閱書籍、刪除書籍、查看書籍列表、退出系統(tǒng)、查找書籍、返還書籍這些,本文主要給大家介紹該系統(tǒng)的數(shù)據(jù)庫語句,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-10-10用StopWatch優(yōu)雅替代currentTimeMillis計算程序執(zhí)行耗時
別再用System.currentTimeMillis()計算程序執(zhí)行耗時了,擁抱StopWatch優(yōu)雅來優(yōu)雅的計算,代碼更簡潔效率更高,本文帶你了解StopWatch的使用2021-09-09