commons-io在struts框架中无法获取upload.parseRequest(request)

commons-io在struts框架中无法获取upload.parseRequest(request)上传的文件的主要原因是因为struts将request进行了封装,在文件上传时struts会将HttpServletRequest请求被转成了MultiPartRequestWrapper,所以如需使用request,则需要将struts封装好的的MultiPartRequestWrapper转换成HttpServletRequest,这里需要实行两部操作:
    操作一:创建java类,继承JakartaMultiPartRequest,代码如下:
                public class RequestParseWrapper extends JakartaMultiPartRequest {

public void parse(HttpServletRequest servletRequest, String saveDir)throws IOException{
    }
}

    操作二:在struts配置文件里添加上,代码如下:
                <!-- 出来文件上传时servletFileUpload.parseRequest(request)取不到值的问题 -->

    <bean type= "org.apache.struts2.dispatcher.multipart.MultiPartRequest"
  name= "myRequestParser" class= "com.turui.util.RequestParseWrapper"
  scope= "default" optional= "true " />
<constant name= "struts.multipart.handler" value= "myRequestParser" />

这里的class是指操作一创建的java类



1、如果struts2是

status2.3.4

配置文件struts.xml里加上

?
1
2
3
4
< strong >< bean type = "org.apache.struts2.dispatcher.multipart.MultiPartRequest"
name = "myRequestParser"   class = "com.icf.common.base.actions.RequestParseWrapper"
scope = "default"   optional = "true " />
< constant   name = "struts.multipart.handler"   value = "myRequestParser"   /></ strong >

?
1
2
3
<span></span> public class RequestParseWrapper  extends JakartaMultiPartRequest   {
public void parse(HttpServletRequest servletRequest, String saveDir) throws IOException{   } 
}<span></span>

2、如果struts2是

struts2.3.15.1 以后的版本

在struts2.3.15.1后的配置里,struts2的struts-default.xml 里把 struts.multipart.handler 改成了struts.multipart.parser 
在struts配置文件中加上

?
1
2
3
4
< bean   type = "org.apache.struts2.dispatcher.multipart.MultiPartRequest"
name = "myRequestParser"   class = "com.icf.common.base.actions.RequestParseWrapper"
scope = "default"   optional = "true "   />
< constant   name = " struts.multipart.parser"   value = "myRequestParser"   />

创建一个自己的类RequestParseWrapper  

?
1
2
3
4
public class RequestParseWrapper  extends JakartaMultiPartRequest   {
p<span></span>ublic void parse(HttpServletRequest   servletRequest,   String   saveDir) throws  IOException{  
         }   
}

分析原因


struts2的源代码对request对象进行了封装,导致fileList = upload.parseRequest(request);获取不到上传的对象


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值