亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > AJAX > 正文

AJAX和JSP實現的基于WEB的文件上傳的進度控制代碼第1/2頁

2024-09-01 08:29:45
字體:
來源:轉載
供稿:網友
1.引言 2.實現代碼
2.1.服務器端代碼
2.1.1. 文件上傳狀態類(FileUploadStatus) 2.1.2. 文件上傳狀態偵聽類(FileUploadListener) 2.1.3. 后臺服務類(BackGroundService) 2.1.4. 文件上傳狀態控制類(BeanControler)
2.2. 客戶端代碼
2.2.1. AjaxWrapper.js 2.2.2. fileUpload.html 2.2.3. result.jsp 2.2.4. fileUpload.css
2.3. 配置文件
3. 結語

 1. 引言

   基于瀏覽器的文件上傳,特別是對于通過<input type="file">標簽來實現上傳的情況, 存在著嚴重的性能問題,因為用戶提交了文件之后,在瀏覽器把文件上傳到服務器的過程中,界面看上去似乎是靜止的,如果是小文件還好些,如果不幸需要上傳的是幾兆、幾十兆甚至上百兆的文件,我相信那是一種非常痛苦的體驗,我們中間的很多人應該都有過此種不堪的經歷。(一笑)

  現在我就針對這個問題給出一個解決方案,我們將實現一個具有監控能力的WEB上傳的程序——它不僅把文件上傳到服務器,而且"實時地"監視文件上傳的實際過程。

解決方案的基本思路是這樣的:

  在Form提交上傳文件同時,使用AJAX周期性地從Servlet輪詢上傳狀態信息   然后,根據此信息更新進度條和相關文字,及時反映文件傳輸狀態   如果用戶取消上傳操作,則進行相應的現場清理工作:刪除已經上傳的文件,在Form提交頁面中顯示相關信息   如果上傳完畢,顯示已經上傳的文件內容(或鏈接)

在介紹源代碼之前,我們先來看看程序運行界面:

 2. 實現代碼

   實現代碼想當然的有服務器端代碼和客戶端代碼(呵呵),我們先從服務器端開始。

 2.1. 服務器端代碼

  2.1.1. 文件上傳狀態類(FileUploadStatus)

   使用FileUploadStatus這個類記錄文件上傳狀態,并將其作為服務器端與web客戶端之間通信的媒介,通過對這個類對象提供上傳狀態作為服務器回應發送給web客戶端, web客戶端使用JavaScript獲得文件上傳狀態。源代碼如下:

/** * 本例程演示了通過Web上傳文件過程中的進度顯示。您可以對本例程進行任何修改和使用。 * 如果需要轉載本例程,請您注明作者。 * * 作者: 劉作晨 * EMail:liuzuochen@gmail.com */package liuzuochen.sample.upload;import java.util.*;public class FileUploadStatus {  //上傳用戶地址  private String uploadAddr;  //上傳總量  private long uploadTotalSize = 0;  //讀取上傳總量  private long readTotalSize = 0;  //當前上傳文件號  private int currentUploadFileNum = 0;  //成功讀取上傳文件數  private int successUploadFileCount = 0;  //狀態  private String status = "";  //處理起始時間  private long processStartTime = 0l;  //處理終止時間  private long processEndTime = 0l;  //處理執行時間  private long processRunningTime = 0l;  //上傳文件URL列表  private List uploadFileUrlList = new ArrayList();  //取消上傳  private boolean cancel = false;  //上傳base目錄  private String baseDir = "";  public FileUploadStatus() {  }  public String getBaseDir() {    return baseDir;  }  public void setBaseDir(String baseDir) {    this.baseDir = baseDir;  }  public boolean getCancel() {    return cancel;  }  public void setCancel(boolean cancel) {    this.cancel = cancel;  }  public List getUploadFileUrlList() {    return uploadFileUrlList;  }  public void setUploadFileUrlList(List uploadFileUrlList) {    this.uploadFileUrlList = uploadFileUrlList;  }  public long getProcessRunningTime() {    return processRunningTime;  }  public void setProcessRunningTime(long processRunningTime) {    this.processRunningTime = processRunningTime;  }  public long getProcessEndTime() {    return processEndTime;  }  public void setProcessEndTime(long processEndTime) {    this.processEndTime = processEndTime;  }  public long getProcessStartTime() {    return processStartTime;  }  public void setProcessStartTime(long processStartTime) {    this.processStartTime = processStartTime;  }  public long getReadTotalSize() {    return readTotalSize;  }  public void setReadTotalSize(long readTotalSize) {    this.readTotalSize = readTotalSize;  }  public int getSuccessUploadFileCount() {    return successUploadFileCount;  }  public void setSuccessUploadFileCount(int successUploadFileCount) {    this.successUploadFileCount = successUploadFileCount;  }  public int getCurrentUploadFileNum() {    return currentUploadFileNum;  }  public void setCurrentUploadFileNum(int currentUploadFileNum) {    this.currentUploadFileNum = currentUploadFileNum;  }  public String getStatus() {    return status;  }  public void setStatus(String status) {    this.status = status;  }  public long getUploadTotalSize() {    return uploadTotalSize;  }  public String getUploadAddr() {    return uploadAddr;  }  public void setUploadTotalSize(long uploadTotalSize) {    this.uploadTotalSize = uploadTotalSize;  }  public void setUploadAddr(String uploadAddr) {    this.uploadAddr = uploadAddr;  }  public String toJSon() {    StringBuffer strJSon = new StringBuffer();    strJSon.append("{UploadTotalSize:").append(getUploadTotalSize()).append(        ",")        .append("ReadTotalSize:").append(getReadTotalSize()).append(",")        .append("CurrentUploadFileNum:").append(getCurrentUploadFileNum()).        append(",")        .append("SuccessUploadFileCount:").append(            getSuccessUploadFileCount()).append(",")        .append("Status:'").append(getStatus()).append("',")        .append("ProcessStartTime:").append(getProcessStartTime()).        append(",")        .append("ProcessEndTime:").append(getProcessEndTime()).append(            ",")        .append("ProcessRunningTime:").append(getProcessRunningTime()).        append(",")        .append("Cancel:").append(getCancel()).append("}");    return strJSon.toString();  }}

  2.1.2. 文件上傳狀態偵聽類(FileUploadListener)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情精品久久久久久免费印度| 国产精品黄页免费高清在线观看| 日韩美女视频免费在线观看| 最近2019年中文视频免费在线观看| 91wwwcom在线观看| 欧美日韩精品在线观看| 在线观看视频99| 日韩在线观看免费高清| 国产精品久久久91| 欧美最猛性xxxxx(亚洲精品)| 日韩欧美第一页| 国产精品第一视频| 亚洲香蕉成视频在线观看| 97在线观看免费| 日韩亚洲综合在线| 亚洲综合国产精品| 国产精品久久网| 亚洲精品乱码久久久久久按摩观| 国产视频久久久| 日韩在线观看电影| 日本三级久久久| 久久精品视频亚洲| 国产精品女主播| 欧美一区深夜视频| 欧美激情啊啊啊| 国内伊人久久久久久网站视频| 久久久久久18| 成人免费大片黄在线播放| 亚洲美女视频网| 欧美xxxx18性欧美| www.久久色.com| 亚洲免费av网址| 日韩中文字幕在线看| 日韩免费视频在线观看| 欧美日本在线视频中文字字幕| 成人网页在线免费观看| 97久久国产精品| 国产精品久久久999| 成人亚洲综合色就1024| 国内精品视频久久| 亚洲国产99精品国自产| 日本久久久久久久久久久| 日韩欧美在线视频观看| 亚洲欧美精品伊人久久| 久久夜精品va视频免费观看| 国内精品久久久久久久久| 国产一区二区三区视频在线观看| 亚洲成人精品av| 久久久综合免费视频| 全球成人中文在线| 亚洲欧美一区二区三区在线| 中文字幕欧美国内| 国产精品福利网| 欧美性猛交99久久久久99按摩| 色一情一乱一区二区| 日韩美女免费线视频| 欧美视频免费在线| 91久久国产精品91久久性色| 91精品国产91久久久久福利| 91久久精品国产| 精品久久久999| 国产区精品视频| 国产精品久久久久久婷婷天堂| 午夜精品一区二区三区视频免费看| 欧美性猛交xxxx黑人| 亚洲欧美国产日韩天堂区| 欧美久久精品午夜青青大伊人| 日本亚洲精品在线观看| 午夜精品一区二区三区在线视频| 91禁国产网站| 国产精品综合不卡av| 国产精品久久久久9999| 在线日韩av观看| 国产视频精品自拍| 精品一区精品二区| 欧美日韩黄色大片| 57pao成人国产永久免费| 成人h片在线播放免费网站| 欧美色另类天堂2015| 久久精品2019中文字幕| 欧美精品videossex性护士| 欧美国产精品va在线观看| 欧美大片免费看| 亚洲综合在线中文字幕| 日韩av手机在线看| 亚洲大胆人体视频| 亚洲精品福利视频| 欧美视频一二三| 2019中文字幕全在线观看| 亚洲福利视频免费观看| 亚洲毛片在线免费观看| 欧美精品福利在线| 久久久久久18| 亚洲第一黄色网| www高清在线视频日韩欧美| 欧美怡红院视频一区二区三区| 中文字幕日韩在线播放| 91精品视频一区| 青青草原一区二区| 色黄久久久久久| 欧美国产在线电影| 91色视频在线观看| 久久在精品线影院精品国产| 欧美精品国产精品日韩精品| 欧美最猛性xxxxx免费| 2024亚洲男人天堂| 上原亚衣av一区二区三区| 国产91成人video| 国外成人免费在线播放| 欧美成人免费小视频| 亚洲最大的网站| 18性欧美xxxⅹ性满足| 国产精品亚洲自拍| 日韩中文理论片| 亚洲精品第一页| 在线播放国产一区中文字幕剧情欧美| 久久手机精品视频| 久久精品精品电影网| 中文字幕无线精品亚洲乱码一区| 欧洲成人在线视频| 北条麻妃一区二区在线观看| 亚洲精品第一国产综合精品| 精品欧美aⅴ在线网站| 国产亚洲人成a一在线v站| 亚洲аv电影天堂网| 国产日韩欧美一二三区| 中文字幕日韩欧美在线| 国产中文字幕日韩| 欧美日本啪啪无遮挡网站| 欧美精品激情blacked18| 欧美性色xo影院| 在线观看国产精品91| 欧美精品videosex性欧美| 性亚洲最疯狂xxxx高清| 久久久国产视频91| 欧美极品少妇xxxxⅹ喷水| 日韩有码在线播放| 亚洲精品在线视频| 亚洲国产女人aaa毛片在线| 国产第一区电影| 精品美女国产在线| 欧美午夜精品久久久久久浪潮| 黄色一区二区三区| 精品亚洲男同gayvideo网站| 国产精品久久久久久av下载红粉| 久久91精品国产91久久久| 97在线看免费观看视频在线观看| 亚洲精品一区二区网址| 色av吧综合网| 久久久久久尹人网香蕉| 亚洲男人第一av网站| 亚洲一区二区三| 伦伦影院午夜日韩欧美限制| 97热精品视频官网| 国产成人精品在线观看| 亚洲人成毛片在线播放| 国产精品久久99久久| 国产一区二区三区在线观看视频| 亚洲国产高清福利视频| 久久久精品久久久久| 中日韩美女免费视频网址在线观看| 国产成人精品久久亚洲高清不卡| 国产午夜精品视频| 国产精品久在线观看|