解決文件上傳時upload.parseRequest(request)得到的List為空


今天做項目時需要用到文件上傳的相關功能,所用到組件為common-io.jar和common-fileupload.jar

JSP頁面是上一個表單,然后有一個上傳文件框,提交到對應的Servlet,Servlet調用API做相應的上傳操作。

在Servlet中有一句API是這樣的:

List<FileItem> fileItemList = upload.parseRequest(request);

意思解析表單中的每一個表單項,封裝成FileItem對象,以List方式返回剛開始怎么也上傳不成功,在網上搜了一下資料,很多人說是表單沒有寫這句話("enctype="multipart/form-data""),但是我的表單是這樣寫的啊,也不成功。。於是我打印了一下fileItemList的長度,結果為0,原來原因出在這里。折騰了好久,才知道原來是Struts2的過濾器在作祟,因為我的項目里面有Struts2的環境,將web.xml配置文件做相應修改即可完成。修改如下:

 

<filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

改成

<filter>
        <filter-name>struts2</filter-name>
        <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>*.action</url-pattern>
    </filter-mapping>

問題就解決了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM