亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

MultipartResolver和ServletFileUpload沖突

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

整個問題產生的原因是Spring框架先調用了MultipartResolver 來處理http multi-part的請求。這里http multipart的請求已經消耗掉。后面又交給ServletFileUpload ,那么ServletFileUpload 就獲取不到相應的multi-part請求。

1.首先spring boot默認會調用MultipartResolver

來處理http multi-part的請求,須在配置文件中把spring.http.multipart.enabled=false。這樣就不會默認調用MultipartResolver。

2.需要重寫一個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的方法。如果這個返回值為true,那么Multipart http body就會MyMultipartResolver 消耗掉.如果這里返回false
     * 那么就會交給后面的自己寫的處理函數處理例如剛才ServletFileUpload 所在的函數
     * @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文件上傳時出現(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"/>
<!--單個上傳的文件大小-->
<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));
}

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

idea控制臺給你來個null

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

multipartResolver

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

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

大家千萬記得這個!

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Java中的鎖ReentrantLock詳解

    Java中的鎖ReentrantLock詳解

    這篇文章主要介紹了Java中的鎖ReentrantLock詳解,ReentantLock是java中重入鎖的實現(xiàn),一次只能有一個線程來持有鎖,包含三個內部類,Sync、NonFairSync、FairSync,需要的朋友可以參考下
    2023-09-09
  • Java設計模式之適配器模式

    Java設計模式之適配器模式

    這篇文章介紹了Java設計模式之適配器模式,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-09-09
  • java web實現(xiàn)郵箱激活與忘記密碼

    java web實現(xiàn)郵箱激活與忘記密碼

    這篇文章主要為大家詳細介紹了java web實現(xiàn)郵箱激活與忘記密碼、重置密碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • Spring為IOC容器注入Bean的五種方式詳解

    Spring為IOC容器注入Bean的五種方式詳解

    這篇文章主要介紹了Spring為IOC容器注入Bean的五種方式詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • 介紹下Java Spring的核心接口,容器中Bean的實例化

    介紹下Java Spring的核心接口,容器中Bean的實例化

    這篇文章主要介紹了Spring核心接口,容器中bean的實例化過程解析及完整代碼示例,簡單分析實例化bean過程并且分享了相關實例,具有一定借鑒價值,需要的朋友可以參考下
    2021-09-09
  • Java concurrency之CountDownLatch原理和示例_動力節(jié)點Java學院整理

    Java concurrency之CountDownLatch原理和示例_動力節(jié)點Java學院整理

    CountDownLatch是一個同步輔助類,在完成一組正在其他線程中執(zhí)行的操作之前,它允許一個或多個線程一直等待。 下面通過本文給大家分享Java concurrency之CountDownLatch原理和示例,需要的的朋友參考下吧
    2017-06-06
  • Mybatis?大數據量批量寫優(yōu)化的案例詳解

    Mybatis?大數據量批量寫優(yōu)化的案例詳解

    這篇文章主要介紹了Mybatis?大數據量批量寫優(yōu)化的示例代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • spring?Cloud微服務阿里開源TTL身份信息的線程間復用

    spring?Cloud微服務阿里開源TTL身份信息的線程間復用

    這篇文章主要為大家介紹了spring?Cloud微服務中使用阿里開源TTL身份信息的線程間復用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • java實現(xiàn)簡單登錄界面的實戰(zhàn)過程

    java實現(xiàn)簡單登錄界面的實戰(zhàn)過程

    學習JAVA的過程當中,登陸界面是多數人第一個實現(xiàn)的小程序,下面這篇文章主要給大家介紹了關于利用java實現(xiàn)簡單登錄界面的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • Java基于中介者模式實現(xiàn)多人聊天室功能示例

    Java基于中介者模式實現(xiàn)多人聊天室功能示例

    這篇文章主要介紹了Java基于中介者模式實現(xiàn)多人聊天室功能,詳細分析了中介者模式的概念、原理以及使用中介模式實現(xiàn)多人聊天的步驟、操作技巧與注意事項,需要的朋友可以參考下
    2018-05-05

最新評論