解决文件上传时upload.parseRequest(request)得到的List为空

Posted 一叶知秋。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决文件上传时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>

问题就解决了

以上是关于解决文件上传时upload.parseRequest(request)得到的List为空的主要内容,如果未能解决你的问题,请参考以下文章

GraphQL:在文件上传期间解决承诺时出错

解决上传文件或图片时选择相同文件无法触发change事件的问题

解决文件上传时upload.parseRequest(request)得到的List为空

怎么解决上传文件时winSCP报错误码3

SpringCloud通过网关上传文件文件名中文乱码问题解决

flask上传文件时request.files为空的解决办法