如何用Struts实现动态(不定数量)多个文件上传

要求必须完全用struts实现。  
单个文件上传,我会。  
多个文件上传,我会。  
动态(不定数量)文件上传,我不会。  
从网上找了半天,都是说单个或者确定数量的文件上传。所以如果是这样的答案,就不用回复了,我也不会给分的,抱歉。  
不会的,也不用回复,我自己会顶的,抱歉。  
 
只要能给出正确答案的,无论贴代码也好,贴地址也好,都是欢迎的。  
 
 
不说废话,楼主觉得下面的代码用得上就给分吧。  
 
 
主要代码如下  
 
Form部分:  
 
public  class  MultiUploadForm  extends  ActionForm  {  
       private  List  myFiles;  
       public  MultiUploadForm(){  
               myFiles  =  new  ArrayList();  
               //为了能够在页面初始显示一个file  
               myFiles.add(new  UploadFile());  
       }  
       public  List  getMyFiles()  {  
               return  myFiles;  
       }          
 
   //注意这个方法的定义  
 
     public  UploadFile  getUploadFile(int  index){  
               int  size  =  myFiles.size();  
               if(index>size-1){  
                       myFiles.add(new  UploadFile());  
               }  
               return  (UploadFile)myFiles.get(index);  
       }  
       public  void  setMyFiles(List  myFiles)  {  
               this.myFiles  =  myFiles;  
       }  
}  
 
Dataset部分:  
public  class  UploadFile  implements  Serializable  {  
       private  FormFile  file;  
       public  FormFile  getFile()  {  
               System.out.println("run  in  uploadFile.getFile()");  
               return  file;  
       }  
       public  void  setFile(FormFile  file)  {  
               this.file  =  file;  
       }  
}  
Action部分:  
public  class  MultiUploadAction  extends  Action  {  
       public  ActionForward  execute(ActionMapping  mapping,  ActionForm  form,  
                                                                 HttpServletRequest  request,  
                                                                 HttpServletResponse  response)  {  
               MultiUploadForm  multiUploadForm  =  (MultiUploadForm)  form;  
               List  myFiles  =  multiUploadForm.getMyFiles();  
               for(int  i  =0;i<myFiles.size();i++){  
                       UploadFile  uploadFile  =  (UploadFile)myFiles.get(i);  
                       FormFile  file  =  uploadFile.getFile();  
 
                       if(file==null){  
                               System.out.println("file  is  null");  
                       }  
                       else{  
 
                               //能运行到这里,就可以使用单个文件上传的方法进行上传了。循环而已  
                               System.out.println("filename:::"  +  file.getFileName());  
                               System.out.println("file  size:::"  +  file.getFileSize());  
                       }  
               }  
 
               return  null;  
       }  
}  
 
JSP部分:  
 
<%@  page  contentType="text/html;  charset=GBK"  %>  
<%@  taglib  uri="/WEB-INF/struts-html.tld"  prefix="html"  %>  
<%@  taglib  uri="/WEB-INF/struts-nested.tld"  prefix="nested"  %>  
 
<html:html>  
<head>  
<title>  
multiUploadDemo  
</title>  
</head>  
<script  language="javascript"  type="">  
     var  num  =  0;  
     function  addFile(){  
           var  innerHTML  =  multiUploadForm.innerHTML;  
           var  signal  =  "<TD  id=tdTarget>";  
           var  signalLen  =  signal.length;  
           var  targetIndex  =  innerHTML.indexOf(signal);  
 
           var  preHTML  =  innerHTML.substring(0,(targetIndex-6));  
           var  subHTML  =  innerHTML.substring(targetIndex-6);  
           num++;  
           var  insertHTML  =  "<TR><TD><input  type=file  name=uploadFile["+  num  +  "].file  value=''></TD>";  
           innerHTML  =  preHTML  +  insertHTML  +  subHTML;  
 
           multiUploadForm.innerHTML  =  innerHTML;  
           //alert(multiUploadForm.innerHTML);  
     }  
     function  upload(){  
         multiUploadForm.submit();  
     }  
</script>  
<body  bgcolor="#ffffff">  
<html:form  method="post"  action="/multiUploadAction.do"  enctype="multipart/form-data">  
<table  border="1">  
<TBODY>  
<br><br>  
 
this  is  file  
   <nested:iterate  id="uploadFile"  property="myFiles"  name="multiUploadForm"  indexId="index">  
           <nested:nest  property="uploadFile">  
               <nested:file  property="file"  name="uploadFile"  indexed="true"/>  
           </nested:nest>  
   </nested:iterate>  
 
 
<TR>  
   <input  type="button"  name="btnAddFile"  value="Add  File"  οnclick="addFile()"/>  
   <TR><TD  id="tdTarget"></TD>  
   <input  type="button"  name="btnUpload"  value="upload"  οnclick="upload()">  
</TBODY>  
</table>  
</html:form>  
</body>  
</html:html>  
 
 struts-config.xml部分:  
 
   <form-beans>  
       <form-bean  name="multiUploadForm"  type="MultiUploadForm"  />  
   </form-beans>  
 
<action  name="multiUploadForm"  path="/multiUploadAction"  type="MultiUploadAction"  />  
 
以上只是对动态多文件上传部分进行了描述,只是一个Demo。大家可以根据自己的需求变通的调整一下。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值