struts实现多文件上传

利用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.οnclick=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() " >& nbsp; & nbsp;
            
< 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, 08192))!=-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 >

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值