日期:2014-05-18  浏览次数:20798 次

CSDN上 到底还有没有我要找的高手,“500分”急求问题解决者!!!!!!
废话不说   ,一个老生常谈的问题加点需求:struts   上传不定数量文件   (我用的struts   1.1   带的Formfile   )   ,   几点要求和说明如下   :

1.   最重要的一点,JSP   页面上传框的名字是相同的(构成数组形式,便于动态增减上传框的数量等),比如   上传文档的都用的一个名字,上传图片的用的是另外一个名字   ,不是这种情况的就请不用拿出来了,我会!
详细情况可参看我的blog或者JSP页面截图,地址如下:
http://download1.csdn.net/down3/20070601/01104322187.GIF    

2.   页面有固定数量的上传框和不定数量   两种,并且并不一定每个上传都一定要输入上传的内容(比如针对固定数量上传框的那种),只要解决了第一点,这点就好办了。

3.   不要想当然,我自己试过多个解决方案,比如:getMultipartRequestHandler().   getFileElements()和form里用map
形式等,都没能达到理想的效果。
因此自己没有测试成功的,也请不要show   出来了。

4.请尽量提供较完整的解决方案,比如jsp,form,action   相应代码或连接均可以!

5.感谢up   者   和关注此帖者!

6.   由于我一次最多只能给分100   ,所以我会开几个帖来,原来已开了2个帖,连接如下:
http://community.csdn.net/Expert/topic/5439/5439331.xml?temp=.510998

http://community.csdn.net/Expert/topic/5441/5441537.xml?temp=.9765436

主帖为此帖,我会随时关注,如有补充,我会在跟帖中说明,解决问题者立即给分   ,   500分一分不少   ,讲的就是信誉!

7.考虑到能实时交流,在此留下我的联系方式:
QQ   :527487771  
Email   :     ouhn@ouhn.com  
如有不对的地方,还望管理员斑竹们能通融或告知我一下,谢谢!
 


------解决方案--------------------
upVO 定义
private FormFile[] files;
对应生成 setter & getter


页面

<input name= "vo.files " >
<input name= "vo.files " >
<input name= "vo.files " >
<input name= "vo.files " >
...
<input name= "vo.files " >


DynaActionForm dyForm = (DynaActionForm) form;
upVO vo = (upVO) dyForm.get( "vo ");

if(vo.getFiles() != null){
for(int i = 0 ; i < vo.getFiles().length; i++ ){


FormFile file = vo.getFiles()[i];
if(file != null && !file.equals( " ") && !files.getFileName().equals( " ") && files.getFileSize() > 0){
////// 进行上传以及其他当前文件的操作


}
}
------解决方案--------------------
我原来建了UploadFile的类 ,
只有一个属性 private FormFile[] files

另外如果我不用DynaActionForm(因为要写很多属性到config文件里面等原因),而用普通actionForm , 那form 里面怎么写才能对应 对应 <input name= "vo.files " type=file> ?
我在form 写 private UploadFile vo = new UploadFile() ;提示参数不匹配,
也不能写成private UploadFile vo.files .

这个地方还请指教? 谢谢!


=======================================

在UploadFile 里面要设置对应的 setter 和 getter

struts
<form-bean name= "upfilesForm " type= "org.apache.struts.validator.DynaValidatorForm ">
<form-property name= "vo " type= "com.....vo.UploadFile "/>
</form-bean>
这样写,只要一个 vo 就把页面上的所有的属性都带过来了
也就是所有的 vo.XXX
的对应的东东
比如,你还有一个,vo.name or vo.id
<input name= "vo.name " type=text>
<input name= "vo.id " type=hidden>


action 如上所说的做,循环操作文件
DynaActionForm dyForm = (DynaActionForm) form;
UploadFile vo = (UploadFile) dyForm.get( "vo ");


页面

<form name= "upfilesForm " method= "post " action= "./XXXXAction.do?cmd=onSave " ENCTYPE= "multipart/form-data ">

<input name= "vo.files " type=file>
<input name= "vo.files " type=file>
<input name= "vo.files " type=file>
<input name= "vo.files " type=file&g