struts 用smartupdate 以及 apache.commons.fileupload的问题

在把FileUpload或者smartupload与struts1.3结合(jsp + uploadactiono)使用过程中发现,如果在action mapping配置中不指定formbean,文件上传过程正常。如果指定了formbean,文件上传不正常,取不到文件。


struts-config.xml

<action path="/uploadaction"
name="TestForm" <!--指定formbean-->
type="UploadAction"
parameter="method" >
<forward name="success" path="/success.jsp" />
</action>

现象:在struts-config.xml文件中,如果指定了formbean——name="TestForm" ,则文件无法正确上传,UploadAction中的fu.parseRequest( request)方法返回值为null;如果去掉了说明formbean的name属性,则文件可以正常上传。

原因:struts的RequestProccessor.process已经包含了处理文件上传的方法。如果在action配置中设置了formbean ,那么在你自己的action处理request之前,struts已经在RequestProccessor.populate方法中处理了request,因此,在自己的action中就取不到上传的文件了。

处理:如果要自己在action中处理文件上传工作,那么就不要在配置文件中配置formbean。

其他选择:如果仍需使用formbean,那么可以使用struts内置的文件上传功能。具体使用方法见struts的相关文档,以及struts的upload例子。以下是几个文件片断:

method="post" enctype="multipart/form-data" >


更多信息请参见以下网址:
http://jakarta.apache.org/commons/fileupload/
http://struts.apache.org/
http://cancait.blog.163.com/blog/static/213357442009071313237/(看了这个解决的于是部分转载)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值