<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 閱讀(523) 評論(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]


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


    網站導航:
     
    主站蜘蛛池模板: 91视频精品全国免费观看| 一级毛片免费毛片毛片| 亚洲日本在线电影| 七次郎成人免费线路视频| 国产性生交xxxxx免费| 亚洲成AV人片在线观看| 欧美激情综合亚洲一二区| 91精品国产免费久久国语麻豆| 免费成人午夜视频| 亚洲国产成人精品无码区在线网站| 爱情岛论坛亚洲品质自拍视频网站| 午夜免费福利视频| 中文字幕中韩乱码亚洲大片| 亚洲高清中文字幕免费| 久久久久久久久久国产精品免费| 亚洲va无码手机在线电影| 成人在线免费视频| 国产精品四虎在线观看免费 | 亚洲av日韩av永久在线观看 | 国产免费AV片在线播放唯爱网| 国产成人高清亚洲| 成人婷婷网色偷偷亚洲男人的天堂| 国产精品色午夜免费视频| 精品视频免费在线| 日本牲交大片免费观看| 亚洲国产av一区二区三区丶| 女人被免费视频网站| 亚洲人成人77777网站不卡| 永久免费av无码网站大全| 亚洲xxxx18| 在线观看视频免费完整版| 老司机福利在线免费观看| 国产免费av片在线无码免费看| 亚洲日本VA午夜在线影院| 亚洲电影日韩精品| WWW国产成人免费观看视频| 亚洲精品国产精品国自产观看| 黄色网址在线免费观看| 久久国产亚洲电影天堂| 免费成人在线视频观看| 亚洲人成电影在线天堂|