SpringBoot中的multipartResolver上傳文件配置
multipartResolver上傳文件配置
1、gradle配置
compile ('commons-io:commons-io:1.4') compile('commons-fileupload:commons-fileupload:1.2.1')
2、注冊(cè)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上傳文件的時(shí)候,我們會(huì)用到MultipartResolver。我看通過(guò)源碼可以看到
@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配置類,默認(rèn)加載的是StandardServletMultipartResolver。
然而,我們往往會(huì)在項(xiàng)目中加入commons-fileupload依賴,加載的是CommonsMultipartResolver。此時(shí)同時(shí)使用兩個(gè),會(huì)產(chǎn)生沖突。
解決方案
1、使用SpringBoot 默認(rèn)的StandardServletMultipartResolver,不依賴commons-fileupload。
2、使用commons-fileupload的CommonsMultipartResolver,
排除默認(rèn)
spring: autoconfigure: exclude: org.springframework.boot.autoconfigure.web.servlet.MultipartAutoConfiguration
自定義文件解析對(duì)象
@Bean(name = "multipartResolver") public MultipartResolver multipartResolver() { CommonsMultipartResolver resolver = new CommonsMultipartResolver(); resolver.setDefaultEncoding("UTF-8"); return resolver; }
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
如何自定義feign調(diào)用實(shí)現(xiàn)hystrix超時(shí)、異常熔斷
這篇文章主要介紹了自定義feign調(diào)用實(shí)現(xiàn)hystrix超時(shí)、異常熔斷的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06Spring Security常用過(guò)濾器實(shí)例解析
這篇文章主要介紹了Spring Security常用過(guò)濾器實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03使用springboot整合mybatis-plus實(shí)現(xiàn)數(shù)據(jù)庫(kù)的增刪查改示例
這篇文章主要介紹了使用springboot整合mybatis-plus實(shí)現(xiàn)數(shù)據(jù)庫(kù)的增刪查改示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04Java開發(fā)實(shí)例之圖書管理系統(tǒng)的實(shí)現(xiàn)
圖書管理的功能大體包括:增加書籍、借閱書籍、刪除書籍、查看書籍列表、退出系統(tǒng)、查找書籍、返還書籍這些,本文主要給大家介紹該系統(tǒng)的數(shù)據(jù)庫(kù)語(yǔ)句,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-10-10用StopWatch優(yōu)雅替代currentTimeMillis計(jì)算程序執(zhí)行耗時(shí)
別再用System.currentTimeMillis()計(jì)算程序執(zhí)行耗時(shí)了,擁抱StopWatch優(yōu)雅來(lái)優(yōu)雅的計(jì)算,代碼更簡(jiǎn)潔效率更高,本文帶你了解StopWatch的使用2021-09-09Springboot集成ClickHouse及應(yīng)用場(chǎng)景分析
這篇文章主要介紹了Springboot集成ClickHouse的實(shí)例代碼,本文通過(guò)應(yīng)用場(chǎng)景實(shí)例代碼介紹了整合springboot的詳細(xì)過(guò)程,感興趣的朋友跟隨小編一起看看吧2022-02-02