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

          ajax struts 動態(tài)多文件上傳

          Posted on 2007-07-30 10:01 semovy 閱讀(2667) 評論(5)  編輯  收藏 所屬分類: JavaScriptstruts

          index.jsp:

          <%@ page language="java" pageEncoding="gbk"%>

          <%@ taglib uri="<%@ taglib uri="<%@ taglib uri="<%@ taglib uri="

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
          <html:html>
          <head>
          <title>
          multiUploadDemo
          </title>
          </head>
          <script language="javascript">
             var num = 0;
           
           function upload(){
            document.getElementById("status").innerHTML = "文件上傳中...";
               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);
          }
          function callback(msg)
          {
           document.getElementById("status").innerHTML = "文件上傳完成...<br>" + msg;
          }
          </script>
          <body bgcolor="#ffffff">
          <div id="status"></div>
          <html:form method="post" action="/multiUpload.do" enctype="multipart/form-data" target="hidden_frame">

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

          </html:form>
          <iframe name='hidden_frame' id="hidden_frame" style="display:none"></iframe>
          <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:

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "

          <struts-config>
            <data-sources />
            <form-beans >
              <form-bean name="multiUploadForm" type="com.yourcompany.struts.MultiUploadForm" />

            </form-beans>

            <global-exceptions />
            <global-forwards />
            <action-mappings >
              <action
                attribute="multiUploadForm"
                name="multiUploadForm"
                path="/multiUpload"
                scope="request"
                type="com.yourcompany.struts.MultiUploadAction"
                validate="false" />

            </action-mappings>

            <message-resources parameter="com.yourcompany.struts.ApplicationResources" />
          </struts-config>

          Form bean:  MultiUploadForm.java


          package com.yourcompany.struts;

          import java.util.ArrayList;
          import java.util.List;

          import org.apache.struts.action.ActionForm;

          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; 
              } 

          }


          ActionBean :MultiUploadAction.java

          package com.yourcompany.struts;

          import java.io.IOException;
          import java.io.PrintWriter;
          import java.util.List;

          import javax.servlet.http.HttpServletRequest;
          import javax.servlet.http.HttpServletResponse;

          import org.apache.struts.action.Action;
          import org.apache.struts.action.ActionForm;
          import org.apache.struts.action.ActionForward;
          import org.apache.struts.action.ActionMapping;
          import org.apache.struts.upload.FormFile;

          public class MultiUploadAction extends Action {
           public ActionForward execute(ActionMapping mapping, ActionForm form,
             HttpServletRequest request, HttpServletResponse response) {
            MultiUploadForm multiUploadForm = (MultiUploadForm) form;
            List myFiles = multiUploadForm.getMyFiles();
            String fileStr = "";
            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 {

              // 能運行到這里,就可以使用單個文件上傳的方法進(jìn)行上傳了。循環(huán)而已
              System.out.println("filename:::" + file.getFileName());
              System.out.println("file  size:::" + file.getFileSize());
              fileStr += "filename:::" + file.getFileName() + "file  size:::" + file.getFileSize() ;
               
             }
            }
            //返回文本
            try
            {
             response.setHeader("ContentType", "text/html;charset=gbk");
             PrintWriter out = response.getWriter();
             out.write("<script>parent.callback('upload file success" + fileStr + "')</script>");
            }catch(IOException e)
            {
             e.printStackTrace();
            }

            return null;
           }

          }


          Bean: UploadFile.java

          package com.yourcompany.struts;

          import java.io.Serializable;

          import org.apache.struts.upload.FormFile;

          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; 
               } 
          }


          評論

          # re: ajax struts 動態(tài)多文件上傳[未登錄]  回復(fù)  更多評論   

          2007-09-28 04:57 by aa
          為什么沒有初始顯示一個file

          # re: ajax struts 動態(tài)多文件上傳  回復(fù)  更多評論   

          2008-06-19 17:05 by dddd
          沒看出來哪里有ajax的影子

          # re: ajax struts 動態(tài)多文件上傳  回復(fù)  更多評論   

          2008-07-30 13:12 by sdf
          sssssss

          # re: ajax struts 動態(tài)多文件上傳  回復(fù)  更多評論   

          2008-08-27 10:15 by 防盜防
          沒看出來哪里有ajax的影

          # re: ajax struts 動態(tài)多文件上傳  回復(fù)  更多評論   

          2008-10-03 14:16 by error
          copy&paste
          主站蜘蛛池模板: 义乌市| 施甸县| 镇平县| 日喀则市| 田阳县| 芜湖市| 通江县| 宣汉县| 图片| 甘孜县| 洪江市| 常山县| 宣武区| 天柱县| 古田县| 宁武县| 米林县| 新建县| 禄劝| 监利县| 肃宁县| 青神县| 青阳县| 富蕴县| 兴国县| 南溪县| 宁蒗| 武安市| 禹州市| 甘洛县| 呼图壁县| 凌海市| 大丰市| 柘荣县| 商河县| 东至县| 德惠市| 永和县| 繁峙县| 东乡| 昭通市|