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

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

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

    Thinking

    快樂編程,開心生活
    posts - 21, comments - 27, trackbacks - 0, articles - -5
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    組件之上傳下載篇

    Posted on 2007-02-06 17:19 lixw 閱讀(518) 評論(0)  編輯  收藏

    一、最簡單的方式:
    設置表單form 的 method=”post” ENCTYPE="multipart/form-data"
    通過
    InputStream in =servletRequest.getInputStream();
    以流的方式處理,它的缺點就不言而喻了

    二、commons-fileupload:
    官方網站:[http://jakarta.apache.org/commons/fileupload/]
    它提供基于Servlet的上傳,可上傳到內存、文件,且文件的上傳位置,最大上傳文件字節數可以在程序中設置,
    特別是對于多文件上傳支持較好,List items = upload.parseRequest(request)就可以處理多文件,其他都不用考慮,
    提供了item.isFormField()判斷是否為標準表單值的方法,簡潔實用,但是可配置仍然不好,對API的依賴性很大

    使用步驟:
    1、首先判斷一個HttpServletRequest是否是一個上傳文件的請求:
    boolean isMultipart = ServletFileUpload.isMultipartContent(request);
    2、處理請求:
    2.1、創建基于硬盤存儲的工廠
    DiskFileItemFactory factory = new DiskFileItemFactory();
    /* 或者
    DiskFileItemFactory factory = new DiskFileItemFactory(yourMaxMemorySize, yourTempDirectory);
    */
    2.2、設置工廠屬性,從而生成個性化ServletFileUpload
    //設置最多只允許在內存中存儲的數據,單位:字節
    factory.setSizeThreshold(yourMaxMemorySize);
    // 設置一旦文件大小超過getSizeThreshold()的值時數據存放在硬盤的目錄
    factory.setRepository(yourTempDirectory);
    2、處理上傳文件:
    Iterator iter = items.iterator();
    while (iter.hasNext()) {
    ?? FileItem item = (FileItem) iter.next();
    ?? //判斷是否為標準表單域
    ?? if (item.isFormField()) {
    ??????? String name = item.getFieldName();
    ?String value = item.getString();
    ???…
    ??? ?} else {
    ??String fieldname = item.getFieldName();
    ??String filename = item.getName();
    ??String contentType = item.getContentType();
    ??boolean isInMemory = item.isInMemory();
    ??long sizeInBytes = item.getSize();
    ??…
    ?//直接從內存訪問上傳數據
    ?byte[] data = item.get();
    ???
    ?//采用流方式讀取上傳文件
    ?InputStream stream = item.openStream();

    ?// 保存到文件
    ?if (writeToFile) {
    ?File uploadedFile = new File(storeFilePath);
    ?item.write(uploadedFile);
    ??? } else {
    ?//轉換為輸出流
    ?InputStream uploadedStream = item.getInputStream();
    ?...
    ?uploadedStream.close();
    ?}
    }
    ...

    三、javazoom的UploadBean:
    官方網站:[http://www.javazoom.net/jzservlets/uploadbean/uploadbean.html]

    功能強大,支持上傳到文件系統,數據庫,同時它還有一些高級功能,如對上傳的監聽,overwrite過濾器、自定義解析器、
    overwrite策略、黑名單、白名單等,特別是它采用了JavaBean方式,所以在JSP頁面可以輕松的采用

    從而實現上傳到硬盤目錄但是它的源代碼是需要Money的,我們只能得到它的jar包和API Doc,
    同時它對多文件上傳處理的不是很好(我覺得)。

    官方網站上有詳細的說明供參考。

    四、Jspsmartupload
    官方網站:[http://www.jspsmart.com/] 可惜一直打不開
    這里有一篇文章說明:[http://java.ccidnet.com/art/3737/20060717/638255_1.html]


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


    網站導航:
     
    主站蜘蛛池模板: 在线观看人成网站深夜免费| 久久一区二区三区免费播放| 很黄很色很刺激的视频免费| 中文字幕免费在线看| 亚洲第一成人影院| 亚洲乱人伦精品图片| 999国内精品永久免费观看| 亚洲国产成人精品无码区在线网站| 小日子的在线观看免费| 亚洲AV无码久久寂寞少妇| 7m凹凸精品分类大全免费| 亚洲人成免费电影| 在线jlzzjlzz免费播放| 极品色天使在线婷婷天堂亚洲| 又粗又硬又大又爽免费视频播放| 暖暖免费中文在线日本| 久久91亚洲人成电影网站| 67pao强力打造高清免费| 中文字幕在线日亚洲9| 日韩电影免费在线观看中文字幕| 色婷婷六月亚洲婷婷丁香| 最近2019中文字幕免费看最新| 亚洲精品女同中文字幕| 午夜宅男在线永久免费观看网| 亚洲日韩AV无码一区二区三区人| 免费一级毛片清高播放| 在线人成免费视频69国产| 亚洲日韩中文在线精品第一| 国产成人免费AV在线播放| 亚洲国产模特在线播放| 日批日出水久久亚洲精品tv| 久久国产乱子免费精品| 亚洲一区二区三区高清在线观看| 亚洲国产成人久久笫一页| 三年片在线观看免费大全电影| 亚洲最大天堂无码精品区| 国产亚洲精久久久久久无码AV| 免费的黄色网页在线免费观看| 亚洲国产精品va在线播放| 成人a免费α片在线视频网站| yellow视频免费看|