upload.parseRequest(request)得到的List为空

HttpServletRequest req = getRequest();
HttpServletResponse resp = getResponse();
DiskFileUpload fileUpload = new DiskFileUpload();
fileUpload.setRepositoryPath(tempPath);
List items = fileUpload.parseRequest(req);
网上找了很多方法,但是不符合我的实际情况,需要做一些改动,网上的方法如下:

网上方案如下:

  • 01

    1、在struts.xml文件里添加如下代码,其中指向的com.test.aop.RequestParseWrapper的类文件,是自定义的servlet文件,转换request类型。 <bean type="org.apache.s。truts2.dispatcher.multipart.MultiPartRequest" name="multipartRequestParser" class="com.test.aop.RequestParseWrapper" scope="default" optional="true" /> <constant name="struts.multipart.handler" value="multipartRequestParser" />

  • 02

    2、com.test.aop.RequestParseWrapper类文件内容如下: public class RequestParseWrapper extends JakartaMultiPartRequest{ @Override public void parse(HttpServletRequest servletRequest,String saveDir) throws IOException{} } 重写父类方法,但方法什么都不做。

我的实际情况解决方案:

  • 01

    1、缺陷: 根据以上方法,可以得到upload.parseRequest(request)返回的list,但是后来发现一个问题,这样改动之后,我其他模块用到多文件上传的地方,没办法实现新建功能了,因为jsp页面的参数无法传到action。原因:我的jsp页面也有多文件上传,但使用的是上传组件,表单中enctype="multipart/form-data",request被改动,所以造成参数传递失败。

  • 02

    2、解决方案: 修改com.test.aop.RequestParseWrapper类文件内容,如果是指定的用此方法的请求用修改过的request,如果是其他的请求用默认的request处理方式,即父类(JakartaMultiPartRequest)方法JakartaMultiPartRequest。具体修改过的代码如下:

  • 03

    public class RequestParseWrapper extends JakartaMultiPartRequest{ @Override public void parse(HttpServletRequest servletRequest,String saveDir) throws IOException{ String url = servletRequest.getRequestURL().toString(); String urlAction = url.substring(url.indexOf("!")+1); //截取请求名 if(!"attachmentUpload.action".equals(urlAction)){ //非指定请求文件上传,调用父类parse方法,否则什么都不做 super.parse(servletRequest, saveDir); } } }

(0)

相关推荐

  • nodejs上传图片Error: ENOENT, no such file

    在学习node.js的时候,学习上传图片并显示到网页上,上传过程中出现下面错误: { [Error: ENOENT, no such file or directory 'C:\DOCUME~1\AD ...

  • WORD中如何一次删除多余的空段落

    当我们从网上或从其它地方把文字粘贴到WORD文档中时,WORD会自动产生大量的多余的空段落。 如下图,这是从网页中复制粘贴后形成的段落。我们发现,多余的空段落实在太多了。 现在,我们要把这些多余的大量 ...

  • Linux中如何修复"X11 forwarding request failed on channel 0"错误

    问题: 当我尝试使用SSH的X11转发选项连接到远程主机时, 我在登录时遇到了一个 "X11 forwarding request failed on channel 0" (X11 转发请求在通道0 ...

  • Win8照片应用不能显示新图片能显示新文件夹(为空)

    一个朋友在使用Win8系统时遇到问题,“照片”应用的图片库里不显示我的电脑里“库”栏目下图片文件夹里新加入的图片,但是能显示新文件夹(显示为空)。这让他百思不得其解,有什么方法可以解决呢? 如图,“F ...

  • find 按文件修改时间查找文件及find空文件夹

    查找两天前修改过的文件:find . -type f -mtime -2 查找3天内修改过的文件:find -ctime -3 find命令使用超过6天,空文件独立查询命令:find /data/ba ...

  • WIN7电脑上我最近的文档列表总是显示为空的解决方法

    在我们平常时操作电脑的时候总是会打开一些文档,正常情况下我们浏览过的文档历史记录会在我最近的文档列表中看到,可是也会遇到我最近的文档的列表总是显示为空,也就是表明文档浏览的历史记录都没有存在了,那么要 ...

  • 泰捷视频tv版直播列表"用户分享"为空导致部分卡顿问题解决办法

    现在很多用户抱怨泰捷视频tv版2.7.4版本上线之后,直播“用户分享”列表为空,同时还会卡顿,后来经过我们技术团队的仔细发现,其实是因为你的设备系统设置时间错误,导致无法拉取到最新节目列表! 解决办 ...

  • 释放增加win2003系统的内存的方法让内存多空些出来

    我们在买电脑的时候都会考虑到电脑的使用寿命和质量问题,所以都会选择好点的电脑来购买。可是就算是再好的电脑随着时间的使用,系统的内存也会得到消耗,而且越来越少,那么,我们应该如何让win2003系统中的 ...

  • 用850风枪解决南北桥空焊的心得

    用850风枪解决南北桥空焊的一点心得 一块845主板,客户拿过来的时候说:开机困难,有时候能开机,但进系统就会死机。经测是南桥空焊,于是用手的稍稍用力按着南桥,开机,一切正常,进系统也正常,就是重启后 ...