解決文件上傳時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的過濾器在作祟,
<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為空