隨筆 - 3, 文章 - 152, 評論 - 17, 引用 - 0

          導航

          公告

          歡迎來到辰的blog

          發消息給我有事您Q我

          常用鏈接

          文章分類(153)

          搜索

          •  

          積分與排名

          • 積分 - 53167
          • 排名 - 951

          最新評論

          閱讀排行榜

          用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 閱讀(246) 評論(0)  編輯  收藏 所屬分類: Struts

          主站蜘蛛池模板: 孝义市| 社会| 宿州市| 靖远县| 安康市| 延庆县| 荔浦县| 乳山市| 乌苏市| 滨州市| 大厂| 永新县| 湟中县| 乌拉特前旗| 浦县| 阜平县| 南昌县| 冕宁县| 鹤庆县| 柳林县| 兴隆县| 蛟河市| 临西县| 河津市| 财经| 同德县| 芒康县| 丰原市| 兰坪| 黔江区| 清镇市| 南丰县| 凤城市| 米泉市| 平塘县| 永济市| 屯门区| 黄石市| 贡嘎县| 桐城市| 永兴县|