程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 用Struts上傳多個文件的方法

用Struts上傳多個文件的方法

編輯:關於JAVA

最近在做Struts項目時遇到了上傳多個文件的問題。在網上查了不少資料,也沒有找到用Struts上傳多個文件的例子。我經過幾天的研究,實現了用Struts上傳多個文件的功能。現在貼出來讓大家共享!

一。建立ActionForm

package com.cnehu.struts.form;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
import org.apache.struts.upload.MultipartRequestHandler;
/**//**
*
* Title:UpLoadForm
*
*
* Copyright: Copyright (c) 2005 techyang ;http://blog.csdn.net/techyang
*
* @author techyang
* @version 1.0
*/
public class UpLoadForm extends ActionForm
...{
   public static final String ERROR_PROPERTY_MAX_LENGTH_EXCEEDED ="org.apache.struts.webapp.upload.MaxLengthExceeded";
   protected FormFile theFile;
   protected FormFile theFile2;
   public FormFile getTheFile()
   ...{
     return theFile;
   }
   public void setTheFile(FormFile theFile)
   ...{
     this.theFile = theFile;
   }
   public ActionErrors validate(ActionMapping mapping,
       HttpServletRequest request)
   ...{
     ActionErrors errors = null;
     //has the maximum length been exceeded?
     Boolean maxLengthExceeded = (Boolean) request
         .getAttribute(MultipartRequestHandler.ATTRIBUTE_MAX_LENGTH_EXCEEDED);
     if ((maxLengthExceeded != null) && (maxLengthExceeded.booleanValue()))
     ...{
       errors = new ActionErrors();
       errors.add(ERROR_PROPERTY_MAX_LENGTH_EXCEEDED, new ActionError(
           "maxLengthExceeded"));
     }
     return errors;
   }
   /**//**
   * @return Returns the theFile2.
   */
   public FormFile getTheFile2()
   ...{
     return theFile2;
   }
   /**//**
   * @param theFile2 The theFile2 to set.
   */
   public void setTheFile2(FormFile theFile2)
   ...{
     this.theFile2 = theFile2;
   }
}

二、建立ActionServlet

package com.cnehu.struts.action;
import java.io.*;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import org.apache.struts.upload.FormFile;
import com.cnehu.struts.form.UpLoadForm;
/**
 * <p>
 * Title:UpLoadAction
 * </p>
 * <p>
 * Copyright: Copyright (c) 2005 techyang http://blog.csdn.net/techyang
 * </p>
 * @author techyang
 * @version 1.0
 */
public class UpLoadAction extends Action
{
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception
    {
            String encoding = request.getCharacterEncoding();
            if ((encoding != null) && (encoding.equalsIgnoreCase("utf-8")))
            {
                response.setContentType("text/html; charset=gb2312");//如果沒有指定編碼,編碼格式為gb2312
            }
            UpLoadForm theForm = (UpLoadForm) form;
            FormFile file = theForm.getTheFile();//取得上傳的文件
            FormFile file2=theForm.getTheFile2();
            try
            {
                /*
                 * 取當前系統路徑D:\Tomcat5\webapps\coka\ 其中coka 為當前context
                 */
                String filePath = this.getServlet().getServletContext()
                .getRealPath("/");
                InputStream stream = file.getInputStream();//把文件讀入
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                /*
                 * 建立一個上傳文件的輸出流 如果是linux系統請把UploadFiles後的"\\"換成"/"
                 */
                OutputStream bos = new FileOutputStream(filePath +
                        "UploadFiles\\"+file.getFileName());
                //D:\Tomcat5\webapps\coka\UploadFiles\DSC01508.JPG
              /*  System.out.println(filePath +
                        "UploadFiles\\"+file.getFileName());
                System.out.println(filePath);*/
                request.setAttribute("fileName",filePath + "/"
                        + file.getFileName());
                int bytesRead = 0;
                byte[] buffer = new byte[8192];
                while ((bytesRead = stream.read(buffer, 0, 8192)) != -1)
                {
                    bos.write(buffer, 0, bytesRead);//將文件寫入服務器
                }
                bos.close();
                stream.close();
                InputStream stream2 = file2.getInputStream();//把文件讀入
                ByteArrayOutputStream baos2 = new ByteArrayOutputStream();
                OutputStream bos2 =  new FileOutputStream(filePath +
                        "UploadFiles\\"+file2.getFileName());//建立一個上傳文件的輸出流
                int bytesRead2 = 0;
                byte[] buffer2 = new byte[8192];
                int i=0;
                while ((bytesRead2 = stream2.read(buffer2, 0, 8192)) != -1)
                {
                    bos2.write(buffer2, 0, bytesRead2);//將文件寫入服務器
                }
                bos2.close();
                stream2.close();
            } catch (Exception e)
            {
                System.err.print(e);
            }
            return mapping.findForward("display");
    }
}

三、建立上傳用的JSP文件 upload.jsp

<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
<html:html>
<head>
<title>用Struts上傳文件</title>
</head>
<body>
<html:form action="/uploadsAction" enctype="multipart/form-data">
<html:file property="theFile"/>
<html:file property="theFile2"/>
<html:submit/>
</html:form>
</body>
</html: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="uploadsForm" type="com.cnehu.struts.form.UpLoadForm" />
  </form-beans>
  <global-exceptions />
  <global-forwards >
  </global-forwards>
  <action-mappings >
    <action name="uploadsForm" type="com.cnehu.struts.action.UpLoadAction" path="/uploadsAction">
<forward name="display" path="/display.jsp" />
</action>
   </action-mappings>
</struts-config>

全文完!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved