最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決SpringBoot中MultipartResolver和ServletFileUpload的沖突問題

 更新時(shí)間:2021年10月26日 09:54:07   作者:wmy_0707  
這篇文章主要介紹了解決SpringBoot中MultipartResolver和ServletFileUpload的沖突問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

MultipartResolver和ServletFileUpload沖突

如果同時(shí)使用了MultipartResolver 和ServletFileUpload,就會(huì)在iter.hasNext()返回false.然后整個(gè)循環(huán)就跳出去了。

整個(gè)問題產(chǎn)生的原因是Spring框架先調(diào)用了MultipartResolver 來處理http multi-part的請求。這里http multipart的請求已經(jīng)消耗掉。后面又交給ServletFileUpload ,那么ServletFileUpload 就獲取不到相應(yīng)的multi-part請求。

1.首先spring boot默認(rèn)會(huì)調(diào)用MultipartResolver

來處理http multi-part的請求,須在配置文件中把spring.http.multipart.enabled=false。這樣就不會(huì)默認(rèn)調(diào)用MultipartResolver。

2.需要重寫一個(gè)MyMultipartResolver

重寫isMultipart方法

package dc.platform.admin.common.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import javax.servlet.http.HttpServletRequest;
@Configuration
public class MyMultipartResolver extends CommonsMultipartResolver {
 
    /**
     * 這里是處理Multipart http的方法。如果這個(gè)返回值為true,那么Multipart http body就會(huì)MyMultipartResolver 消耗掉.如果這里返回false
     * 那么就會(huì)交給后面的自己寫的處理函數(shù)處理例如剛才ServletFileUpload 所在的函數(shù)
     * @see org.springframework.web.multipart.commons.CommonsMultipartResolver#isMultipart(javax.servlet.http.HttpServletRequest)
     */
    @Override
    public boolean isMultipart(HttpServletRequest request) {
        // 過濾金格生成文書保存的接口  兼容MultipartResolver 或者 ServletFileUpload
        if (request.getRequestURI().contains("mgt/document/upload")||request.getRequestURI().contains("/modules/document.html")) {
            return false;
        }
        return super.isMultipart(request);
    }
}

springMVC文件上傳時(shí)出現(xiàn)的“坑”—multipartResolver

首先,頁面代碼,這里是upload.jsp:

<form action="${pageContext.request.contextPath}/upload" method="post" enctype="multipart/form-data">
姓名:<input type="text" name="name">
文件:<input type="file" name="multipartFile">
提交: <input type="submit" value="提交">
</form>

然后,我們在pom文件中添加文件上傳用到的依賴文件:

<!--文件上傳依賴-->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.3</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>

接著我們在spring-mvc.xml文件中配置文件上傳解析器:

<bean id="commonsMultipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--上傳文件總大小-->
<property name="maxUploadSize" value="54280"/>
<!--編碼方式-->
<property name="defaultEncoding" value="UTF-8"/>
<!--單個(gè)上傳的文件大小-->
<property name="maxUploadSizePerFile" value="54280"/>
</bean>

之后編寫了文件上傳代碼:

@RequestMapping("/upload")
@ResponseBody
public void upload(String name, MultipartFile multipartFile) throws IOException {
System.out.println(name);
String filename = multipartFile.getOriginalFilename();
multipartFile.transferTo(new File("F:\\"+filename));
}

這個(gè)時(shí)候你以為萬事大吉,可以成功運(yùn)行的時(shí)候,驚喜出現(xiàn)了,頁面給你來一個(gè)500…

idea控制臺給你來個(gè)null

我把代碼從頭順了一遍始終沒找到我的錯(cuò),于是乎,有技術(shù)朋友是真好?。?!原來在文件解析器那里ID必須要配置為

multipartResolver

*哈哈,加粗是為了醒目~~~~*

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!--上傳文件總大小-->
<property name="maxUploadSize" value="54280"/>
<!--編碼方式-->
<property name="defaultEncoding" value="UTF-8"/>
<!--單個(gè)上傳的文件大小-->
<property name="maxUploadSizePerFile" value="54280"/>
</bean>

大家千萬記得這個(gè)!

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解SpringBoot獲得Maven-pom中版本號和編譯時(shí)間戳

    詳解SpringBoot獲得Maven-pom中版本號和編譯時(shí)間戳

    這篇文章主要介紹了詳解SpringBoot獲得Maven-pom中版本號和編譯時(shí)間戳,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • 基于java線程安全問題及原理性分析

    基于java線程安全問題及原理性分析

    下面小編就為大家?guī)硪黄趈ava線程安全問題及原理性分析。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • SpringBoot返回json和xml的示例代碼

    SpringBoot返回json和xml的示例代碼

    本篇文章主要介紹了SpringBoot返回json和xml的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • Java基礎(chǔ)教程_判斷語句if else

    Java基礎(chǔ)教程_判斷語句if else

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)教程_判斷語句if else。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06
  • 淺談Java slf4j日志簡單理解

    淺談Java slf4j日志簡單理解

    這篇文章主要介紹了淺談Java日志簡單理解,詳細(xì)的介紹了slf4j的概念和使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • 淺談Java8 的foreach跳出循環(huán)break/return

    淺談Java8 的foreach跳出循環(huán)break/return

    這篇文章主要介紹了Java8 的foreach跳出循環(huán)break/return,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • 分享JVM 的四種引用方式

    分享JVM 的四種引用方式

    這篇文章主要介紹了分享JVM 的四種引用方式,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07
  • Springboot ApplicationRunner的使用解讀

    Springboot ApplicationRunner的使用解讀

    這篇文章主要介紹了Springboot ApplicationRunner的使用解讀,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Java實(shí)現(xiàn)定時(shí)任務(wù)的方法總結(jié)

    Java實(shí)現(xiàn)定時(shí)任務(wù)的方法總結(jié)

    這篇文章主要為大家詳細(xì)介紹了Java中實(shí)現(xiàn)定時(shí)任務(wù)的常用7中方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的小伙伴可以參考一下
    2023-06-06
  • 解答為什么 Java 線程沒有Running狀態(tài)

    解答為什么 Java 線程沒有Running狀態(tài)

    Java 線程沒有Running狀態(tài)指的是一個(gè)在 JVM 中執(zhí)行 的線程處于的狀態(tài),本文小編將為大家詳解一二,需要的朋友可以參考下面文章具體內(nèi)容
    2021-09-09

最新評論

赣州市| 成安县| 白山市| 绵阳市| 昌乐县| 西城区| 丹凤县| 泾川县| 绵竹市| 隆昌县| 苍南县| 新巴尔虎左旗| 高安市| 台湾省| 沙坪坝区| 九龙坡区| 金阳县| 莒南县| 常德市| 探索| 建德市| 涞源县| 宣恩县| 浏阳市| 湘潭市| 来安县| 连江县| 白城市| 博湖县| 巩义市| 永年县| 耿马| 古交市| 忻城县| 长汀县| 宣城市| 神池县| 泰州市| 虞城县| 武穴市| 广州市|