您的位置:首页 > 编程语言 > Java开发

struts实现多文件上传

2007-07-26 23:17 537 查看
利用struts实现多文件上传

fileUpload.jsp代码如下:


<%@ page language="java" pageEncoding="gb2312" contentType="text/html;charset=gb2312"%>


<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%> 


<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html"%>


 


<html> 


    <head>


        <title>JSP for FileUploadForm form</title>


        <script language="javascript" type="text/javascript">


       


          var i=0;




          function   addInput()...{




            if(i>=0)...{


                  var attach = "testFile(" + i + ")";


                  if(createInput(attach))


                      i=i+1;


              }


              


          } 




          function deleteInput()...{




                  if(i>=1)...{


                    i=i-1;


                    if(!removeInput())


                        i=i+1;


                }


          } 


          




          function createInput(nm)...{   


                var p=document.createElement("div");


              var  aElement=document.createElement("input");   


             aElement.name=nm;


             aElement.id=nm;


             aElement.type="file";


             aElement.size="50"; 


              //aElement.value="thanks";   


             //aElement.onclick=Function("asdf()");  


             p.appendChild(aElement);


             if(document.getElementById("upload").appendChild(p) == null)




             ...{


                      return false;


                      }


               return true;


          }  


    






          function removeInput(nm)...{


               var aElement = document.getElementById("upload");


                if(aElement.removeChild(aElement.lastChild) == null)


                    return false;


                return true;   


          }  


      




    function check()...{ 


            var aElement = document.getElementById("upload");


              var index =  aElement.children.length;


              var fso=new ActiveXObject("Scripting.FileSystemObject"); 


              var filesize=0;




              while(index>0)...{


              


              var s = aElement.children[index-1].children[0].value;


              




              if(s=='')...{


              alert('请为'+i+'个输入选择文件');


              return false ;




              }else...{


              var f=fso.GetFile(s); 


              filesize=filesize+f.size


              }


              index = index-1;


          }




          if(filesize>15728640)...{


          alert('所传文件总大小不能超过15M');


          return false;


          }


          return true ;


       }


    </script>


        


    </head>


    <body>


    <center>


        <html:form action="/fileUpload" method="post"


        enctype="multipart/form-data" onsubmit="return check()">


        <%-- 


            enctype属性可设置或返回表单内容的MIME类型,如果表单没有enctype属性,默认的值为:"application/x-www-form-urlencoded",


             当内容为“文件”,值应该为"multipart/form-data".


            application/x-www-form-urlencoded: 窗体数据被编码为名称/值对。这是标准的编码格式。


            multipart/form-data: 窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分。


            text/plain: 窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。


         --%>


            <span id="upload"></span><br>


            <input type="button" name="button" value="添加附件" onclick="addInput()">  


            <input type="button" name="button" value="删除附件" onclick="deleteInput()">


            <br><font color=red>上传文件总大小不能超过15M</font><br>


            <html:submit/><html:cancel/>


        </html:form>


    </center>


    </body>


</html>





 

 FileUploadForm.java代码如下:




/**//*


 * Generated by MyEclipse Struts


 * Template path: templates/java/JavaClass.vtl


 */


package com.iss.struts.form;




import java.util.ArrayList;




import javax.servlet.http.HttpServletRequest;


import org.apache.struts.action.ActionErrors;


import org.apache.struts.action.ActionForm;


import org.apache.struts.action.ActionMapping;


import org.apache.struts.upload.FormFile;






/** *//** 


 * MyEclipse Struts


 * Creation date: 07-26-2007


 * 


 * XDoclet definition:


 * @struts.form name="fileUploadForm"


 */




public class FileUploadForm extends ActionForm ...{


    


    private ArrayList formFiles = new ArrayList();






    public void setTestFile(String iIndex, FormFile formFile)




    ...{


      this.formFiles.add(formFile);


    }




    public FormFile getTestFile(String iIndex)




    ...{


      return (FormFile) formFiles.get(Integer.parseInt(iIndex));


    }




    public ArrayList getTestFiles()




    ...{


      return this.formFiles;


    }






    /** *//** 


     * Method validate


     * @param mapping


     * @param request


     * @return ActionErrors


     */


    public ActionErrors validate(ActionMapping mapping,




            HttpServletRequest request) ...{


        // TODO Auto-generated method stub


        return null;


    }






    /** *//** 


     * Method reset


     * @param mapping


     * @param request


     */




    public void reset(ActionMapping mapping, HttpServletRequest request) ...{


        // TODO Auto-generated method stub


    }


}

FileUploadAction.java代码如下:




/**//*


 * Generated by MyEclipse Struts


 * Template path: templates/java/JavaClass.vtl


 */


package com.iss.struts.action;




import java.io.FileNotFoundException;


import java.io.FileOutputStream;


import java.io.IOException;


import java.io.InputStream;


import java.io.OutputStream;


import java.util.ArrayList;




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;




import com.iss.struts.form.FileUploadForm;






/** *//** 


 * MyEclipse Struts


 * Creation date: 07-26-2007


 * 


 * XDoclet definition:


 * @struts.action path="/fileUpload" name="fileUploadForm" input="/form/fileUpload.jsp" scope="request" validate="true"


 */




public class FileUploadAction extends Action ...{




    /**//*


     * Generated Methods


     */






    /** *//** 


     * Method execute


     * @param mapping


     * @param form


     * @param request


     * @param response


     * @return ActionForward


     * @throws IOException 


     * @throws FileNotFoundException 


     */


    public ActionForward execute(ActionMapping mapping, ActionForm form,




            HttpServletRequest request, HttpServletResponse response) throws FileNotFoundException, IOException ...{


        FileUploadForm fileUploadForm = (FileUploadForm) form;


        ArrayList myFiles=fileUploadForm.getTestFiles();




        if(myFiles.size()>0)...{


             String sysroot = servlet.getServletContext()


                .getInitParameter("sysroot");


            




            for(int j=0;j<myFiles.size();j++)...{  


                 


                   FormFile uploadFile = (FormFile)myFiles.get(j);   


                   String fname=uploadFile.getFileName();


                  


                  


                   InputStream streamIn=uploadFile.getInputStream();


                      OutputStream streamOut=new FileOutputStream(sysroot+"/"+fname);


                      int bytesRead=0;


                      byte[] buffer=new byte[8192];




                      while((bytesRead=streamIn.read(buffer, 0, 8192))!=-1)...{


                          streamOut.write(buffer, 0, bytesRead);


                      }


                      streamOut.close();


                      streamIn.close();


            }




        }


        return mapping.findForward("success");


    }


}

success.jsp代码如下:


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




<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>


<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>


<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>






<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">


<html>


  <head>


    


    <title>success.jsp</title>




    <meta http-equiv="pragma" content="no-cache">


    <meta http-equiv="cache-control" content="no-cache">


    <meta http-equiv="expires" content="0">    


    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">


    <meta http-equiv="description" content="This is my page">


    <!--


    <link rel="stylesheet" type="text/css" href="styles.css">


    -->




  </head>


  


  <body>


    上传文件成功! <br>


  </body>


</html>



struts-config.xml配置如下:


<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">




<struts-config>


  <data-sources />


  <form-beans >


    <form-bean name="fileUploadForm" type="com.iss.struts.form.FileUploadForm" />




  </form-beans>




  <global-exceptions />


  <global-forwards />


  <action-mappings >


    <action


      attribute="fileUploadForm"


      input="/form/fileUpload.jsp"


      name="fileUploadForm"


      path="/fileUpload"


      scope="request"


      type="com.iss.struts.action.FileUploadAction">


      <forward name="success" path="/success.jsp" />


    </action>




  </action-mappings>




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


</struts-config>





web.xml配置如下:


<?xml version="1.0" encoding="UTF-8"?>


<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">


   <context-param>


        <param-name>sysroot</param-name>


        <param-value>E:/FileManage</param-value>


    </context-param>


  <servlet>


    <servlet-name>action</servlet-name>


    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>


    <init-param>


      <param-name>config</param-name>


      <param-value>/WEB-INF/struts-config.xml</param-value>


    </init-param>


    <init-param>


      <param-name>debug</param-name>


      <param-value>3</param-value>


    </init-param>


    <init-param>


      <param-name>detail</param-name>


      <param-value>3</param-value>


    </init-param>


    <load-on-startup>0</load-on-startup>


  </servlet>


  <servlet-mapping>


    <servlet-name>action</servlet-name>


    <url-pattern>*.do</url-pattern>


  </servlet-mapping>


</web-app>



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息