1. 程式人生 > >解決文件上傳時upload.parseRequest(request)得到的List為空

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

com eml 配置文件 mapping 有一個 file upload web.xml 對象

今天做項目時需要用到文件上傳的相關功能,所用到組件為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>

問題就解決了

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