<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]


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


    網站導航:
     
    主站蜘蛛池模板: 最近中文字幕完整版免费高清| 亚洲精品国偷自产在线| 亚洲高清无码专区视频| 亚洲自国产拍揄拍| 毛片免费全部播放无码| 久久久久亚洲精品无码蜜桃| 久久久久亚洲国产AV麻豆| 日韩免费福利视频| 亚洲第一综合天堂另类专| 免费无码又爽又刺激高潮软件| 18禁无遮挡无码网站免费| 亚洲久悠悠色悠在线播放| 色播在线永久免费视频网站| 亚洲精品狼友在线播放| 午夜视频免费在线观看| 亚洲手机中文字幕| 免费高清小黄站在线观看| 亚洲综合精品香蕉久久网97| 日本免费一区二区在线观看| 国内精品久久久久影院亚洲| 日韩免费观看一区| 亚洲国产成人精品青青草原| 国产在线观看免费视频软件| 亚洲日本中文字幕区| 成人A毛片免费观看网站| 精品久久免费视频| 成年免费a级毛片| 亚洲αv久久久噜噜噜噜噜| 特黄特色的大片观看免费视频| 99久久免费精品国产72精品九九| 亚洲影院在线观看| 性xxxx视频播放免费| 和老外3p爽粗大免费视频| 亚洲综合一区二区国产精品| 午夜成人免费视频| jzzjzz免费观看大片免费| 亚洲网址在线观看你懂的| 我要看WWW免费看插插视频| 黄色视频在线免费观看| 亚洲中文字幕在线无码一区二区| 6080午夜一级毛片免费看|