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

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

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

    posts - 0,  comments - 6,  trackbacks - 0


    監聽文件上傳進度

    如果你希望可以上傳很大的文件,這時,你可能想將上傳的狀態告訴用戶,如已經接收了多少。 

    觀察上傳進度需要通過一個處理監聽器來實現。

    public class UploadProgressListener implements ProgressListener {

    /**

     * pBytesRead,到目前為止已經讀取的字節數 

     * pContentLength,上傳文件的總長度

     * pItems,正在處理第幾個文件項(0 = 一個項目還沒處理, 1 = 第一個項目正在被讀取, ...

     */

    public void update(long pBytesRead, long pContentLength, int pItems) {

    System.out.println("我們正在讀取文件項目 " + pItems);

            //pContentLength == -1,說明無法得到總數據長度

    if (pContentLength == -1) {

    System.out.println("到目前為止已經讀取了 " + pBytesRead + 字節的數據。");

    else {

    System.out.println("到目前為止已經讀取了" + pContentLength 

    中的 "+ pBytesRead + 字節");

    }

    }

    }

    上面這個監聽器是有問題的。因為它會非常頻繁地被調用。這會帶來性能問題。一個比較好
    的解決辦法是減少調用。如下代碼,為監聽器類增加一個
    kiloBytes實例屬性,其值默認為-1,每當
    pBytesRead/1024的結果變化時(即以KB為單位增加時),將新的計算結果賦值給kiloBytes,然后
    更新上傳進度信息,否則什么都不做,直接返回。這樣就可以減少信息更新的次數。如果上傳的
    文件非常大時,可以將KB單位改為MB,進一步減少信息更新的次數。

    public class UploadProgressListener implements ProgressListener {

    private long kiloBytes = -1;

    /**

     * pBytesRead,到目前為止已經讀取的字節數 

     * pContentLength,上傳文件的總長度

     * pItems,正在處理第幾個文件項(0 = 一個項目還沒處理, 1 = 第一個項目正在被讀取, ...)

     */

    public void update(long pBytesRead, long pContentLength, int pItems) {

    long kBytes = pBytesRead / 1024;// 1KB

    if (kiloBytes == kBytes) {

    return;

    }

    kiloBytes = kBytes;

    System.out.println("我們正在讀取文件項目 " + pItems);

            //pContentLength == -1,說明無法得到總數據長度

    if (pContentLength == -1) {

    System.out.println("到目前為止已經讀取了 " + pBytesRead + 字節的數據。");

    else {

    System.out.println("到目前為止已經讀取了" + pContentLength 

    中的 "+ pBytesRead + 字節");

    }

    }

    }

        在服務器端,我們只需設計一個對象,將進度信息封裝到這個對象中,再將該對象保存在用戶會
    話中,利用上面示例代碼不斷的更新這個對象的狀態。

        在客戶端,我們可以每隔n秒鐘發起一次ajax請求,到會話中獲取文件上傳進度信息,直到上傳完
    畢。


    鄭州蜂鳥科技有限公司 申林 QQ:38185398  鄭州軟件開發興趣小組群:38236716

    學軟件開發,到蜂鳥科技!超強的師資力量 、完善的課程體系 、超低的培訓價格 、真實的企業項目。

    地址:鄭州市文化路豐產路口東50米豐產路21號SOHO世紀城西塔20樓F
    電話:0371-63839606  手機:13838505572(申老師) 13673990036 (許老師)
    QQ: 1073422643  1群:47614738 2群:108157678 
    網址:www.ntcsoft.com

    posted on 2010-09-03 23:59 whistler 閱讀(1599) 評論(0)  編輯  收藏

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


    網站導航:
     
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    留言簿(2)

    我參與的團隊

    文章檔案(22)

    搜索

    •  

    最新評論

    主站蜘蛛池模板: 曰批全过程免费视频在线观看无码 | 波多野结衣中文一区二区免费| 亚洲成a人片毛片在线| 99精品视频免费观看| 亚洲AV无码一区东京热| 国产偷伦视频免费观看| 亚洲AV日韩精品久久久久| 99re在线精品视频免费| 亚洲综合久久久久久中文字幕| 亚洲黄色免费观看| 亚洲欧洲日韩极速播放| 全免费a级毛片免费看无码| 国产精品亚洲精品久久精品| 国产午夜免费秋霞影院| 国产精品综合专区中文字幕免费播放| 亚洲日韩在线观看| 久久国产精品成人免费| 亚洲美免无码中文字幕在线| 在线看片无码永久免费视频| 亚洲av无码专区在线观看下载 | 精品人妻系列无码人妻免费视频| 久久精品国产亚洲精品| 精品无码AV无码免费专区| 亚洲人成7777| 国产最新凸凹视频免费| 中文字幕成人免费高清在线视频| 亚洲A∨无码无在线观看| 67194成是人免费无码| 男女啪啪免费体验区| 亚洲电影免费在线观看| 最近的免费中文字幕视频| 特级毛片爽www免费版| 久久久久久亚洲AV无码专区| 男女啪啪永久免费观看网站| 一级毛片免费播放视频| 激情内射亚洲一区二区三区| 日本免费一区二区三区最新vr| 日本不卡免费新一区二区三区| 日韩亚洲人成在线| 精品亚洲综合在线第一区| 成人免费午夜视频|