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

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

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

    Thinking

    快樂(lè)編程,開(kāi)心生活
    posts - 21, comments - 27, trackbacks - 0, articles - -5
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    組件之上傳下載篇

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

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

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

    使用步驟:
    1、首先判斷一個(gè)HttpServletRequest是否是一個(gè)上傳文件的請(qǐng)求:
    boolean isMultipart = ServletFileUpload.isMultipartContent(request);
    2、處理請(qǐng)求:
    2.1、創(chuàng)建基于硬盤(pán)存儲(chǔ)的工廠(chǎng)
    DiskFileItemFactory factory = new DiskFileItemFactory();
    /* 或者
    DiskFileItemFactory factory = new DiskFileItemFactory(yourMaxMemorySize, yourTempDirectory);
    */
    2.2、設(shè)置工廠(chǎng)屬性,從而生成個(gè)性化ServletFileUpload
    //設(shè)置最多只允許在內(nèi)存中存儲(chǔ)的數(shù)據(jù),單位:字節(jié)
    factory.setSizeThreshold(yourMaxMemorySize);
    // 設(shè)置一旦文件大小超過(guò)getSizeThreshold()的值時(shí)數(shù)據(jù)存放在硬盤(pán)的目錄
    factory.setRepository(yourTempDirectory);
    2、處理上傳文件:
    Iterator iter = items.iterator();
    while (iter.hasNext()) {
    ?? FileItem item = (FileItem) iter.next();
    ?? //判斷是否為標(biāo)準(zhǔn)表單域
    ?? 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();
    ??…
    ?//直接從內(nèi)存訪(fǎng)問(wèn)上傳數(shù)據(jù)
    ?byte[] data = item.get();
    ???
    ?//采用流方式讀取上傳文件
    ?InputStream stream = item.openStream();

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

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

    功能強(qiáng)大,支持上傳到文件系統(tǒng),數(shù)據(jù)庫(kù),同時(shí)它還有一些高級(jí)功能,如對(duì)上傳的監(jiān)聽(tīng),overwrite過(guò)濾器、自定義解析器、
    overwrite策略、黑名單、白名單等,特別是它采用了JavaBean方式,所以在JSP頁(yè)面可以輕松的采用

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

    官方網(wǎng)站上有詳細(xì)的說(shuō)明供參考。

    四、Jspsmartupload
    官方網(wǎng)站:[http://www.jspsmart.com/] 可惜一直打不開(kāi)
    這里有一篇文章說(shuō)明:[http://java.ccidnet.com/art/3737/20060717/638255_1.html]


    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲国产美女在线观看| 亚洲人成网亚洲欧洲无码| 男人的天堂亚洲一区二区三区| 日韩人妻无码精品久久免费一| 免费人成黄页在线观看日本| 精品国产免费人成网站| 好吊妞998视频免费观看在线| 无码日韩精品一区二区免费| 亚洲国产精品成人一区| 亚洲人成伊人成综合网久久| 国产人成网在线播放VA免费| 毛片免费视频播放| 亚洲激情黄色小说| 久久免费视频观看| 亚洲精品国产自在久久| 亚洲日韩av无码中文| 久久国产精品免费专区| 亚洲国产人成精品| 亚洲1区2区3区精华液| 在线A级毛片无码免费真人| 亚洲国产美女视频| 成人浮力影院免费看| 亚洲自偷自拍另类图片二区 | 久久久青草青青国产亚洲免观 | 亚洲乱色熟女一区二区三区丝袜| 亚洲色精品三区二区一区| 亚洲网站免费观看| 内射少妇36P亚洲区| 免费人成在线观看网站品爱网| 亚洲乱码日产一区三区| 中国内地毛片免费高清| 亚洲最大AV网站在线观看| jizz免费在线影视观看网站| 亚洲女人被黑人巨大进入| 高清免费久久午夜精品| 亚洲国产黄在线观看| 色婷婷综合缴情综免费观看| 亚洲一区日韩高清中文字幕亚洲| 一级特黄录像视频免费| 久久久久久久久亚洲| 91免费国产在线观看|