jacky的部落 2010-03-12
在把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/(看了这个解决的于是部分转载)