dorado技術園地

          與您共同討論dorado技術及其應用技巧

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            8 隨筆 :: 0 文章 :: 37 評論 :: 1 Trackbacks
          本文介紹了如何利用dorado提供的FileController實現文件的上傳及下載. FileController是dorado mapping中的一個抽象類. 通過對FileController的繼承, 我們可以很容易的實現一組文件的上傳及下載的功能.

          1. 在dorado studio的Mapping中新建一個Controller. 例如:
          <controller name="file" clazz="sample.file.SampleController">
              
          <action name="upload">
                  
          <forward name="success" path="/file/upload-success.jsp" contextRelative="false" />
                  
          <exception clazz="java.lang.Exception" path="/file/upload-failure.jsp" />
              
          </action>
          </controller>

          2. 為該Controller新建一個Java實現類. 注意在新建Java類的向導中不必勾選任何待重載的父類方法.

          3. 完成上述步驟后. 首先將實現類的父類改為FileController. 然后根據需要重載部分父類中的方法. 可以參考下面的例子:
           1package sample.file;
           2

           3
          import java.io.File;
           4
          import java.io.FileInputStream;
           5
          import java.io.InputStream;
           6
          import javax.servlet.http.HttpServletRequest;
           7

           8
          import org.apache.commons.fileupload.DiskFileUpload;
           9
          import org.apache.commons.fileupload.FileItem;
          10
          import com.bstek.dorado.biz.FileController;
          11import com.bstek.dorado.utils.*
          ;
          12

          13
          /**
          14
           * SampleController
          15 */

          16public class SampleController
          17    extends FileController 
          {
          18  private final String WORK_DIR = "d:/temp"
          ;
          19

          20  
          /**
          21
             * 設定 DiskFileUpload 的相關屬性.
          22
             * <p>關于DiskFileUpload, 你可以到www.apache.org/commons查找FileUpload的文檔</p>
          23
             *
          24
             * @param request HttpServletRequest
          25
             * @param fileUpload DiskFileUpload
          26
             * @param parameters MetaData
          27   */

          28  protected void initFileUpload(HttpServletRequest request,
          29                                DiskFileUpload fileUpload, MetaData parameters) 
          {
          30    fileUpload.setSizeMax(1024 * 512); // 512K

          31  }

          32
          33  
          /**
          34
             * 取得存放上傳文件的目標目錄
          35
             *
          36
             * @param request HttpServletRequest
          37
             * @param parameters MetaData
          38
             * @return String
          39   */

          40  protected String getUploadWorkDir(HttpServletRequest request,
          41                                    MetaData parameters) 
          {
          42    return
           WORK_DIR;
          43  }

          44
          45  
          /**
          46
             * 取得存儲上傳文件的文件名
          47
             *
          48
             * @param request HttpServletRequest
          49
             * @param fileName String
          50
             * @param parameters MetaData
          51
             * @return String
          52   */

          53  protected String getStoreFileName(HttpServletRequest request, String fileName,
          54                                    MetaData parameters) 
          {
          55    return
           fileName;
          56  }

          57
          58  
          /**
          59
             * 存儲已經上傳的文件
          60
             *
          61
             * @param request HttpServletRequest
          62
             * @param fileItem String
          63
             * @param storeFile String
          64
             * @param parameters MetaData
          65
             * @throws Exception
          66   */

          67  protected void storeUploadFile(HttpServletRequest request, FileItem fileItem,
          68
                                           File storeFile, MetaData parameters)
          69      throws Exception 
          {
          70
              super.storeUploadFile(request, fileItem, storeFile, parameters);
          71

          72    /** @todo 在這里您可以添加自己的代碼記錄上傳文件信息 */

          73  }

          74
          75  
          /**
          76
             * 取得將要下載的文件的文件名
          77
             *
          78
             * @param request HttpServletRequest
          79
             * @return String
          80   */

          81  protected String getDownLoadFileName(HttpServletRequest request) {
          82    return request.getParameter("fileName"
          );
          83  }

          84
          85  
          /**
          86
             * 取得將要被下載的文件的文件輸入流
          87
             *
          88
             * @param request HttpServletRequest
          89
             * @return InputStream
          90
             * @throws Exception
          91   */

          92  protected InputStream getDownloadFileInputStream(HttpServletRequest request)
          93      throws Exception 
          {
          94    return new FileInputStream(WORK_DIR + File.separator +

          95                               request.getParameter("fileName"));
          96  }

          97
          98}

          99

          4. 添加一個jsp用來上傳文件. 例如:
          <%@ page contentType="text/html; charset=GBK" %>
          <%@ page errorPage="/dorado/exception.d" %>
          <%@ taglib uri="http://www.bstek.com/dorado" prefix="d" %>
          <html>
          <head>
          <title>文件上傳</title>
          </head>
          <body>
            
          <center>    
              
          <form method="post" target="upload" enctype="multipart/form-data"

                action
          ="<%=request.getContextPath()%>/file.upload.d">
                
          <input type="file" name="file1" size="40">
                
          <br>
                
          <input type="file" name="file2" size="40">
                
          <br>
                
          <input type="file" name="file3" size="40">
                
          <hr>
                
          <input type="submit" value=" 上傳 ">
              
          </form>
            
          </center>
          </body>
          </html>

          5. 如果要下載Server端的文件只要使用通過url訪問我們新定義的FileController就可以了. 例如:
          http://localhost:8080/xxxx/file.download.d?filename=文件名
          posted on 2005-07-14 23:27 dorado技術園地 閱讀(5898) 評論(1)  編輯  收藏

          評論

          # re: 利用dorado mapping快速開發文件的上傳和下載 2007-01-16 13:48 xiebo
          類應該要是abstract的吧。不然無法繼承。  回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 平遥县| 平远县| 青冈县| 衡南县| 河源市| 肇州县| 永胜县| 游戏| 昌乐县| 广汉市| 百色市| 达拉特旗| 罗山县| 南京市| 原平市| 兰州市| 隆安县| 广饶县| 准格尔旗| 南京市| 饶河县| 邳州市| 延边| 乐平市| 河间市| 罗定市| 讷河市| 德清县| 丰原市| 广州市| 崇礼县| 都昌县| 南皮县| 永修县| 新兴县| 东源县| 泾阳县| 富源县| 府谷县| 仁怀市| 铜梁县|