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

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

struts-config.xml

<actionpath="/uploadaction"

name="TestForm"<!--指定formbean-->

type="UploadAction"

parameter="method">

<forwardname="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/(看了这个解决的于是部分转载)

相关推荐