posts - 0, comments - 77, trackbacks - 0, articles - 356
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          Struts實現動態(不定數量)多個文件上傳[轉載]

          Posted on 2007-04-27 14:52 semovy 閱讀(440) 評論(0)  編輯  收藏 所屬分類: 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 upload(){
               multiUploadForm.submit();
             }

          function additem(id)
          {
           var row,cell,str;
           row = eval("document.all["+'"'+id+'"'+"]").insertRow();
           if(row != null )
              {
                 cell = row.insertCell();
                 str="<input type="+'"'+"file"+'"'+" name=uploadFile["+ num +"].file><input type="+'"'+"button"+'"'+" value="+'"'+"刪除"+'"'+" onclick='deleteitem(this,"+'"'+"tb"+'"'+");'>"
                cell.innerHTML=str;
              }
           num++;
          }
          function deleteitem(obj,id)
          {
           var rowNum,curRow;
           curRow = obj.parentNode.parentNode;
           rowNum = eval("document.all."+id).rows.length - 1;
           eval("document.all["+'"'+id+'"'+"]").deleteRow(curRow.rowIndex);
          }

          </script>
          <body bgcolor="#ffffff">
          <html:form method="post" action="/multiUploadAction.do" enctype="multipart/form-data">

          <table id="tb">
          </table>

          </html:form>
          <input type="button" name="btnAddFile" value="Add File" onclick="additem('tb')"/>
          <input type="button" name="btnUpload" value="upload" onclick="upload()"/>
          </body>
          </html:html> 
           struts-config.xml部分:  
           
             <form-beans>  
                 <form-bean  name="multiUploadForm"  type="MultiUploadForm"  />  
             </form-beans>  
           
          <action  name="multiUploadForm"  path="/multiUploadAction"  type="MultiUploadAction"  />  
           
          以上只是對動態多文件上傳部分進行了描述,只是一個Demo。大家可以根據自己的需求變通的調整一下。  

          主站蜘蛛池模板: 沅江市| 和林格尔县| 洱源县| 卢湾区| 青岛市| 苗栗市| 睢宁县| 晴隆县| 青浦区| 上饶市| 屯昌县| 晋城| 台中市| 鄱阳县| 交口县| 延寿县| 崇义县| 根河市| 屏边| 清水县| 温泉县| 通渭县| 巴塘县| 大足县| 界首市| 泊头市| 连州市| 庆元县| 公主岭市| 沐川县| 大厂| 定南县| 南川市| 杂多县| 湖北省| 新安县| 雷波县| 吴堡县| 昆明市| 德阳市| 泸溪县|