<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    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技術園地 閱讀(5895) 評論(1)  編輯  收藏

    評論

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


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


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 亚洲综合色自拍一区| 亚洲国产av玩弄放荡人妇| 久九九精品免费视频| 亚洲av无码有乱码在线观看| 亚洲乳大丰满中文字幕| ww在线观视频免费观看| 在线播放国产不卡免费视频| 亚洲欧洲一区二区| mm1313亚洲精品国产| 日本片免费观看一区二区| 小说专区亚洲春色校园| 久久精品国产精品亚洲毛片| 免费观看亚洲人成网站| 亚洲a一级免费视频| 国产成人亚洲精品电影| 亚洲首页在线观看| 久久久久噜噜噜亚洲熟女综合 | 99精品免费观看| 国产成人人综合亚洲欧美丁香花| 久久久久久亚洲精品中文字幕| 好爽好紧好大的免费视频国产| 久操视频免费观看| 久久精品国产免费| 国产成人人综合亚洲欧美丁香花| 亚洲综合无码一区二区| 精品亚洲视频在线观看 | 青青久在线视频免费观看| 香蕉免费在线视频| 国产亚洲精品美女久久久久久下载| 亚洲国产精品久久久久婷婷老年| 免费国产怡红院在线观看| 日本亚洲免费无线码| 在线观看特色大片免费网站| 国产成人精品亚洲| 亚洲爆乳大丰满无码专区| 亚洲国产日产无码精品| 亚洲美女免费视频| 亚洲动漫精品无码av天堂| 国产a v无码专区亚洲av| 亚洲AⅤ视频一区二区三区| 国产网站免费观看|