隨筆 - 3, 文章 - 152, 評論 - 17, 引用 - 0
          數據加載中……

          用Struts上傳多個文件的方法 選擇自 techyang 的 Blog

          最近在做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;

          /**
           * <p>
           * Title:UpLoadForm
           * </p>
           * <p>
           * Copyright: Copyright (c) 2005 techyang http://blog.csdn.net/techyang
           * </p>
           * @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>


          全文完!

          posted on 2005-08-11 09:03 閱讀(247) 評論(0)  編輯  收藏 所屬分類: Struts

          主站蜘蛛池模板: 阜阳市| 华阴市| 遂昌县| 九龙城区| 贵溪市| 敦化市| 浙江省| 鄂伦春自治旗| 鄢陵县| 武邑县| 嘉禾县| 威信县| 阿克苏市| 临江市| 长泰县| 西青区| 紫云| 高尔夫| 南溪县| 金山区| 鹤岗市| 调兵山市| 泰来县| 凭祥市| 海伦市| 广西| 高州市| 高雄县| 同心县| 绥芬河市| 奉贤区| 灌阳县| 阳城县| 高淳县| 广安市| 自贡市| 江安县| 咸阳市| 贡觉县| 旬阳县| 察隅县|