婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識(shí)庫 > AJAX和JSP實(shí)現(xiàn)的基于WEB的文件上傳的進(jìn)度控制代碼第1/2頁

AJAX和JSP實(shí)現(xiàn)的基于WEB的文件上傳的進(jìn)度控制代碼第1/2頁

熱門標(biāo)簽:許昌智能電銷機(jī)器人公司 上海浦東騰訊地圖標(biāo)注位置 姜堰電銷機(jī)器人 電銷機(jī)器人違法了嗎 澳大利亞城市地圖標(biāo)注 遼寧銀行智能外呼系統(tǒng) 辰溪地圖標(biāo)注 遼寧正規(guī)電銷機(jī)器人 海南銀行智能外呼系統(tǒng)商家
1.引言
2.實(shí)現(xiàn)代碼
2.1.服務(wù)器端代碼
2.1.1. 文件上傳狀態(tài)類(FileUploadStatus)
2.1.2. 文件上傳狀態(tài)偵聽類(FileUploadListener)
2.1.3. 后臺(tái)服務(wù)類(BackGroundService)
2.1.4. 文件上傳狀態(tài)控制類(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. 結(jié)語

 1. 引言

   基于瀏覽器的文件上傳,特別是對(duì)于通過input type="file">標(biāo)簽來實(shí)現(xiàn)上傳的情況, 存在著嚴(yán)重的性能問題,因?yàn)橛脩籼峤涣宋募螅跒g覽器把文件上傳到服務(wù)器的過程中,界面看上去似乎是靜止的,如果是小文件還好些,如果不幸需要上傳的是幾兆、幾十兆甚至上百兆的文件,我相信那是一種非常痛苦的體驗(yàn),我們中間的很多人應(yīng)該都有過此種不堪的經(jīng)歷。(一笑)

  現(xiàn)在我就針對(duì)這個(gè)問題給出一個(gè)解決方案,我們將實(shí)現(xiàn)一個(gè)具有監(jiān)控能力的WEB上傳的程序——它不僅把文件上傳到服務(wù)器,而且"實(shí)時(shí)地"監(jiān)視文件上傳的實(shí)際過程。

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

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

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

 2. 實(shí)現(xiàn)代碼

   實(shí)現(xiàn)代碼想當(dāng)然的有服務(wù)器端代碼和客戶端代碼(呵呵),我們先從服務(wù)器端開始。

 2.1. 服務(wù)器端代碼

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

   使用FileUploadStatus這個(gè)類記錄文件上傳狀態(tài),并將其作為服務(wù)器端與web客戶端之間通信的媒介,通過對(duì)這個(gè)類對(duì)象提供上傳狀態(tài)作為服務(wù)器回應(yīng)發(fā)送給web客戶端, web客戶端使用JavaScript獲得文件上傳狀態(tài)。源代碼如下:

/**
 * 本例程演示了通過Web上傳文件過程中的進(jìn)度顯示。您可以對(duì)本例程進(jìn)行任何修改和使用。
 * 如果需要轉(zhuǎn)載本例程,請您注明作者。
 *
 * 作者: 劉作晨
 * 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;
  //當(dāng)前上傳文件號(hào)
  private int currentUploadFileNum = 0;
  //成功讀取上傳文件數(shù)
  private int successUploadFileCount = 0;
  //狀態(tài)
  private String status = "";
  //處理起始時(shí)間
  private long processStartTime = 0l;
  //處理終止時(shí)間
  private long processEndTime = 0l;
  //處理執(zhí)行時(shí)間
  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. 文件上傳狀態(tài)偵聽類(FileUploadListener)

   使用Common-FileUpload 1.2版本(20070103)。此版本提供了能夠監(jiān)視文件上傳情況的ProcessListener接口,使開發(fā)者通過FileUploadBase類對(duì)象的setProcessListener方法植入自己的Listener。 FileUploadListener類實(shí)現(xiàn)了ProcessListener,在整個(gè)文件上傳過程中,它對(duì)上傳進(jìn)度進(jìn)行監(jiān)控,并且根據(jù)上傳 情況實(shí)時(shí)的更新上傳狀態(tài)Bean。源代碼如下:

/**
 * 本例程演示了通過Web上傳文件過程中的進(jìn)度顯示。您可以對(duì)本例程進(jìn)行任何修改和使用。
 * 如果需要轉(zhuǎn)載本例程,請您注明作者。
 *
 * 作者: 劉作晨
 * EMail:liuzuochen@gmail.com
 */
package liuzuochen.sample.upload;
import org.apache.commons.fileupload.ProgressListener;
import javax.servlet.http.HttpServletRequest;
public class FileUploadListener implements ProgressListener{
	private HttpServletRequest request=null;
	public FileUploadListener(HttpServletRequest request){
		this.request=request;
	}
	/**
	 * 更新狀態(tài)
	 */
	public void update(long pBytesRead, long pContentLength, int pItems){
		FileUploadStatus statusBean= BackGroundService.getStatusBean(request);
		statusBean.setUploadTotalSize(pContentLength);
		//讀取完成
	  if (pContentLength == -1) {
	    statusBean.setStatus("完成對(duì)" + pItems +"個(gè)文件的讀取:讀取了 " + pBytesRead + " bytes.");
	    statusBean.setReadTotalSize(pBytesRead);
	    statusBean.setSuccessUploadFileCount(pItems);
	    statusBean.setProcessEndTime(System.currentTimeMillis());
	    statusBean.setProcessRunningTime(statusBean.getProcessEndTime());
	  //讀取中
	  } else {
	    statusBean.setStatus("當(dāng)前正在處理第" + pItems +"個(gè)文件:已經(jīng)讀取了 " + pBytesRead + 
"/" + pContentLength+ " bytes."); statusBean.setReadTotalSize(pBytesRead); statusBean.setCurrentUploadFileNum(pItems); statusBean.setProcessRunningTime(System.currentTimeMillis()); } BackGroundService.saveStatusBean(request,statusBean); } }
12下一頁閱讀全文
您可能感興趣的文章:
  • Jsp頁面實(shí)現(xiàn)文件上傳下載類代碼
  • jsp中點(diǎn)擊圖片彈出文件上傳界面及預(yù)覽功能的實(shí)現(xiàn)
  • jsp實(shí)現(xiàn)文件上傳下載的程序示例
  • Jsp+Servlet實(shí)現(xiàn)文件上傳下載 文件上傳(一)
  • jsp文件上傳與下載實(shí)例代碼
  • jsp中點(diǎn)擊圖片彈出文件上傳界面及實(shí)現(xiàn)預(yù)覽實(shí)例詳解
  • 利用jsp+Extjs實(shí)現(xiàn)動(dòng)態(tài)顯示文件上傳進(jìn)度
  • jsp 文件上傳瀏覽,支持ie6,ie7,ie8
  • servlet+JSP+mysql實(shí)現(xiàn)文件上傳的方法
  • JSP實(shí)現(xiàn)文件上傳功能

標(biāo)簽:伊春 深圳 西藏 崇左 晉城 撫州 銅川 威海

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《AJAX和JSP實(shí)現(xiàn)的基于WEB的文件上傳的進(jìn)度控制代碼第1/2頁》,本文關(guān)鍵詞  AJAX,和,JSP,實(shí)現(xiàn),的,基于,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《AJAX和JSP實(shí)現(xiàn)的基于WEB的文件上傳的進(jìn)度控制代碼第1/2頁》相關(guān)的同類信息!
  • 本頁收集關(guān)于AJAX和JSP實(shí)現(xiàn)的基于WEB的文件上傳的進(jìn)度控制代碼第1/2頁的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    在线观看亚洲精品| 蜜桃视频一区二区三区| 精品久久久久久久一区二区蜜臀| 欧美精品少妇一区二区三区| 欧美乱妇23p| 91.com在线观看| 日韩一区二区在线观看视频播放| 在线播放一区二区三区| 6080国产精品一区二区| 欧美精选午夜久久久乱码6080| 欧美日韩中文国产| 91麻豆精品国产91久久久使用方法| 欧美日韩国产系列| 精品国产伦一区二区三区观看体验| 精品国产亚洲在线| 国产精品毛片久久久久久| 国产精品进线69影院| 一区二区欧美国产| 久久精品国产久精国产| 成人永久aaa| 色婷婷综合中文久久一本| 欧美探花视频资源| 日韩亚洲欧美高清| 久久久久久久网| 自拍偷在线精品自拍偷无码专区| 亚洲主播在线播放| 蜜桃91丨九色丨蝌蚪91桃色| 懂色av一区二区三区免费看| 在线一区二区观看| 日韩免费视频一区| 综合自拍亚洲综合图不卡区| 亚洲超碰97人人做人人爱| 国产乱人伦偷精品视频不卡| 色系网站成人免费| 久久久久久亚洲综合| 午夜成人免费电影| 国产成人福利片| 69堂精品视频| 亚洲日本va午夜在线影院| 理论电影国产精品| 欧美性猛交一区二区三区精品| 国产亚洲综合性久久久影院| 亚洲国产cao| 国产欧美一区二区精品性色| 五月天激情综合| 亚洲欧美另类久久久精品| 国产伦精一区二区三区| 欧美顶级少妇做爰| 蜜桃视频第一区免费观看| 精品日韩欧美一区二区| 久久久久久久久蜜桃| 国产在线精品视频| 中文字幕免费不卡在线| 国产精品乡下勾搭老头1| 精品日韩av一区二区| 大桥未久av一区二区三区中文| 国产亚洲1区2区3区| 一本久久精品一区二区| 日本不卡视频一二三区| 久久久www免费人成精品| 色婷婷av一区二区三区大白胸| 日本成人在线一区| 精品久久久久香蕉网| 成人美女视频在线观看| 麻豆精品视频在线观看视频| 中文字幕免费不卡在线| 久久综合一区二区| 欧美日韩国产综合久久| 在线免费观看日本一区| 国产在线精品一区在线观看麻豆| 亚洲第一综合色| 欧美一级在线观看| 欧美日韩一区二区三区四区五区| 激情久久久久久久久久久久久久久久| 国产欧美日产一区| 欧美精品色综合| 666欧美在线视频| 在线播放中文字幕一区| 777色狠狠一区二区三区| 欧美一级二级三级乱码| 精品欧美乱码久久久久久1区2区| 日韩视频一区在线观看| 欧美日韩亚洲综合| 精品国产一区二区三区四区四| 99在线精品观看| 久久亚洲欧美国产精品乐播| 欧美伦理影视网| 亚洲精品在线电影| 久久久www成人免费无遮挡大片| 国产欧美视频在线观看| 亚洲精品国产视频| 日韩在线一区二区| 国产一区二区三区视频在线播放 | 国产91精品露脸国语对白| 色综合久久久久| 日韩欧美一区在线| 91精品国产欧美一区二区18 | 久久99精品久久久久| 国产精品夜夜嗨| 91精品国产欧美一区二区成人 | 麻豆成人av在线| 成人免费看黄yyy456| av不卡一区二区三区| 欧美成人在线直播| 亚洲国产一区二区在线播放| 成人性生交大片免费| 久久亚洲影视婷婷| 三级久久三级久久久| 91久久久免费一区二区| 国产精品青草综合久久久久99| 免费的成人av| 精品视频一区二区不卡| 欧美二区在线观看| 久久不见久久见中文字幕免费| 91久久精品一区二区三区| 国产精品二三区| 欧美在线观看一二区| 国产一区免费电影| 欧美在线免费观看视频| 91精品免费观看| 亚洲国产日韩a在线播放| 91色视频在线| 日韩中文字幕麻豆| 7777精品伊人久久久大香线蕉的| 亚洲国产日日夜夜| 国产欧美精品一区aⅴ影院| 免费在线观看一区二区三区| 91女人视频在线观看| 午夜视频在线观看一区| 2020日本不卡一区二区视频| 狠狠久久亚洲欧美| 国产精品少妇自拍| 精品视频123区在线观看| 激情亚洲综合在线| 一区二区三区四区不卡在线| 91精品国产综合久久蜜臀| 国产麻豆精品视频| 蜜桃视频在线观看一区| 国产精品精品国产色婷婷| 欧美xxxx老人做受| 884aa四虎影成人精品一区| 欧美福利一区二区| 国产综合久久久久久鬼色 | 欧美综合在线视频| 91色在线porny| 成人sese在线| 97精品国产露脸对白| 国产**成人网毛片九色| 青青草91视频| 日韩高清不卡一区二区| 国产精品久久久久久亚洲毛片| 国产网站一区二区| 国产亚洲欧美日韩在线一区| 精品日产卡一卡二卡麻豆| 欧美一区二区精美| 91精品国产麻豆国产自产在线| 91欧美一区二区| 91色九色蝌蚪| 欧美一级高清片| 久久久久88色偷偷免费| 亚洲视频狠狠干| 亚洲五月六月丁香激情| 久久99精品久久久久久| 国产一区二区三区在线观看免费| 风间由美一区二区av101| 成人免费高清视频在线观看| 不卡一区二区在线| 91精品黄色片免费大全| 久久久久久久av麻豆果冻| 久久女同性恋中文字幕| 日韩精品中文字幕一区二区三区| 欧美影院一区二区三区| 日韩亚洲欧美中文三级| 国产精品女主播在线观看| 亚洲一区欧美一区| 不卡电影一区二区三区| 国产亚洲精品7777| 一区二区三区日韩精品| 蜜桃精品在线观看| 欧美无人高清视频在线观看| 精品入口麻豆88视频| 亚洲最新在线观看| 成人午夜免费视频| 国产欧美精品一区二区色综合朱莉| 亚洲影视在线观看| 欧美精品日韩一区| 一区二区三区四区不卡视频 | 日韩欧美一级二级| 日韩国产高清在线| 欧美一级二级三级乱码| 午夜视频一区二区| 欧美日韩成人综合天天影院| 亚洲精品高清在线观看| 日本韩国欧美一区二区三区| 国产日韩欧美一区二区三区乱码| 美女网站在线免费欧美精品| 精品sm在线观看| 91色视频在线| 蜜臀av一区二区在线观看| 欧美伦理影视网|