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

主頁 > 知識庫 > 基于Ajax技術實現文件上傳帶進度條

基于Ajax技術實現文件上傳帶進度條

熱門標簽:地圖標注項目怎么樣 機器人電銷騙局揭秘 個人怎樣在百度地圖標注地名 超級大富翁地圖標注 騰訊地圖標注位置能用多久 硅語電話機器人公司 越南河內地圖標注 ai機器人電銷資源 云呼外撥網絡電話系統

1.概述

在實際的Web應該開發或網站開發過程中,經常需要實現文件上傳的功能。在文件上傳過程中,經常需要用戶進行長時間的等待,為了讓用戶及時了解上傳進度,可以在上傳文件的同時,顯示文件的上傳進度條。運行本實例,如圖1所示,訪問文件上傳頁面,單擊“瀏覽”按鈕選擇要上傳的文件,注意文件不能超過50MB,否則系統將給出錯誤提示。選擇完要上傳的文件后,單擊“提交”按鈕,將會上傳文件并顯示上傳進度。

2.技術要點

主要是應用開源的Common-FileUpload組件來實現分段文件上傳,從而實現在上傳過程中,不斷獲取上傳進度。下面對Common-FileUpload組件進行詳細介紹。

Common-FileUpload組件時Apache組織下的jakarta-commons項目下的一個子項目,該組件可以方便地將multipart/form-data類型請求中的各種表單域解析出來。該組件需要另一個名為Common-IO的組件的支持。這兩個組件包文件可以到http://commons.apache.org網站上進行下載。

(1)創建上傳對象

在應該Common-FileUpload組件實現文件上傳時,需要創建一個工廠對象,并根據該工廠對象創建一個新的文件上傳對象,具體代碼如下:

DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory); 

(2)解析上傳請求

創建一個文件上傳對象后,就可以應用該對象來解析上傳請求,獲取全部的表單項,可以通過文件上傳對象的parseRequest()方法來實現。parseRequest()方法的語法結構如下:

public List parseRequest(HttpServletRequest request) throws FileUploadException 

(3)FileItem類

在Common-FileUpload組件中,無論是文件域還是普通表單域,都當成FileItem對象來處理。如果該對象的isFormField()方法返回值為true,則表示是一個普通表單域,否則為一個文件域。在實現文件上傳時,可以通過FileItem類的getName()方法獲得上傳文件的文件名,通過getSize()方法獲得上傳文件的大小。

3.具體實現

(1)創建request.js文件,在該文件中編寫Ajax請求方法。

(2)新建文件上傳頁index.jsp,在該頁中添加用于獲得上傳文件信息的表單以及表單元素,并添加用于顯示進度條的div>標簽和顯示百分比的span>標簽,關鍵代碼如下:

form enctype="multipart/form-data" method="post" action="UpLoad?action=uploadFile">

請選擇上傳的文件:input name="file" type="file" size="34">

注:文件大小請控制在50M以內。

div id="progressBar" class="prog_border" align="left">
img src="images/progressBar.gif" width="0" height="13" id="imgProgress">/div>
span id="progressPercent" style="width:40px;display:none">0%/span>
input name="Submit" type="button" value="提交" onClick="deal(this.form)">
input name="Reset" type="reset" class="btn_grey" value="重置">/td>
/form> 

(3)新建上傳文件的Servlet實現類UpLpad。在該類中編寫實現文件上傳的方法uploadFile(),在該方法中通過Common-FileUpload組件實現分段上傳文件,并計算上傳百分比,實時保存到Session中,關鍵代碼如下:

public void uploadFile(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=GBK");
request.setCharacterEncoding("GBK");
HttpSession session=request.getSession();
session.setAttribute("progressBar",0); //定義指定上傳進度的Session變量
String error = "";
int maxSize=50*1024*1024; //單個上傳文件大小的上限
DiskFileItemFactory factory = new DiskFileItemFactory(); //創建工廠對象
ServletFileUpload upload = new ServletFileUpload(factory); //創建一個新的文件上傳對象
try {
List items = upload.parseRequest(request); // 解析上傳請求
Iterator itr = items.iterator(); // 枚舉方法
while (itr.hasNext()) {
FileItem item = (FileItem) itr.next(); //獲取FileItem對象
if (!item.isFormField()) { // 判斷是否為文件域
if (item.getName() != null  !item.getName().equals("")) {//是否選擇了文件
long upFileSize=item.getSize(); //上傳文件的大小
String fileName=item.getName(); //獲取文件名
if(upFileSize>maxSize){
error="您上傳的文件太大,請選擇不超過50M的文件";
break;
}
// 此時文件暫存在服務器的內存中
File tempFile = new File(fileName); //構造文件目錄臨時對象
String uploadPath = this.getServletContext().getRealPath("/upload");
File file = new File(uploadPath,tempFile.getName()); 
InputStream is=item.getInputStream();
int buffer=1024; //定義緩沖區的大小
int length=0;
byte[] b=new byte[buffer];
double percent=0;
FileOutputStream fos=new FileOutputStream(file);
while((length=is.read(b))!=-1){
percent+=length/(double)upFileSize*100D; //計算上傳文件的百分比
fos.write(b,0,length); //向文件輸出流寫讀取的數據
session.setAttribute("progressBar",Math.round(percent)); 
}
fos.close();
Thread.sleep(1000); //線程休眠1秒
} else {
error="沒有選擇上傳文件!";
}
}
}
} catch (Exception e) {
e.printStackTrace();
error = "上傳文件出現錯誤:" + e.getMessage();
}
if (!"".equals(error)) {
request.setAttribute("error", error);
request.getRequestDispatcher("error.jsp").forward(request, response);
}else {
request.setAttribute("result", "文件上傳成功!");
request.getRequestDispatcher("upFile_deal.jsp").forward(request, response);
}
} 

(4)在文件上傳頁index.jsp中,導入編寫的Ajax請求方法的request.js文件,并編寫獲取上傳進度的Ajax請求方法和Ajax回調函數,關鍵代碼如下:

script language="javascript" src="js/request.js">/script>
script language="javascript">
var request = false;
function getProgress(){ 
var url="showProgress.jsp"; //服務器地址
var param ="nocache="+new Date().getTime(); //每次請求URL參數都不同 ,避免上傳時進度條不動
request=httpRequest("post",url,true,callbackFunc,param); //調用請求方法 
}
//Ajax回調函數
function callbackFunc(){
if( request.readyState==4 ){ //判斷響應是否完成 
if( request.status == 200 ){ //判斷響應是否成功
var h = request.responseText; //獲得返回的響應數據,該數據位上傳進度百分比
h=h.replace(/\s/g,""); //去除字符串中的Unicode空白符
document.getElementById("progressPercent").style.display=""; //顯示百分比 
progressPercent.innerHTML=h+"%"; //顯示完成的百分比
document.getElementById("progressBar").style.display="block"; //顯示進度條
document.getElementById("imgProgress").width=h*(235/100); //顯示完成的進度
}
}
}
/script> 

(5)編寫showProgress.jsp頁面,在該頁中應用EL表達式輸出保存在session域中的上傳進度條的值,具體代碼如下:

%@page contentType="text/html" pageEncoding="GBK"%>
${progressBar} 

(6)編寫表單提交按鈕onclick事件所調用的JavaScript方法,在該方法通過window對象的setInterval()方法每隔一定時間請求一次服務器,獲得最新的上傳進度,關鍵代碼如下:

function deal(form){
form.submit(); //提交表單
timer=window.setInterval("getProgress()",500); //每隔500毫秒獲取一次上傳進度
}

以上所述是小編給大家介紹的基于Ajax技術實現文件上傳帶進度條的相關知識,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

您可能感興趣的文章:
  • jQuery監聽文件上傳實現進度條效果的方法
  • jQuery實現文件上傳進度條特效
  • Jquery Uploadify多文件上傳帶進度條且傳遞自己的參數
  • 基于fileUpload文件上傳帶進度條效果的實例(必看)

標簽:洛陽 邢臺 內蒙古 鄭州 舟山 林芝 遼源 海南

巨人網絡通訊聲明:本文標題《基于Ajax技術實現文件上傳帶進度條》,本文關鍵詞  基于,Ajax,技術,實現,文件,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《基于Ajax技術實現文件上傳帶進度條》相關的同類信息!
  • 本頁收集關于基于Ajax技術實現文件上傳帶進度條的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    天天影视涩香欲综合网| 色综合天天综合网天天狠天天| 91精品国产综合久久福利 | 精品福利av导航| 亚洲精品乱码久久久久久久久 | 另类综合日韩欧美亚洲| 亚洲黄色性网站| 亚洲欧洲精品成人久久奇米网 | 亚洲一区二区在线播放相泽| 欧美国产禁国产网站cc| 26uuu欧美| 精品国产自在久精品国产| 3d成人动漫网站| 欧美日韩国产高清一区二区三区 | 国产呦萝稀缺另类资源| 日本不卡不码高清免费观看| 国产日韩欧美精品综合| 国产精品久久久久久妇女6080| 日韩午夜电影av| 欧美一区二区视频在线观看| 欧美日韩亚洲国产综合| 欧美日韩在线免费视频| 欧美日韩国产中文| 在线电影院国产精品| 4438x成人网最大色成网站| 欧美一区二区三区四区五区| 5566中文字幕一区二区电影| 日韩视频在线永久播放| 欧美r级电影在线观看| 久久久久久久久久久久电影| 中文在线资源观看网站视频免费不卡| 中文av一区特黄| 亚洲老司机在线| 丝袜亚洲另类欧美| 另类中文字幕网| 国产91精品露脸国语对白| 91色porny| 欧美一级理论性理论a| 精品裸体舞一区二区三区| 国产午夜亚洲精品午夜鲁丝片| 国产精品福利一区| 午夜视频一区二区三区| 国产精品亚洲一区二区三区妖精| av电影在线观看一区| 欧美男男青年gay1069videost | 精品国产一二三区| 国产午夜亚洲精品午夜鲁丝片| 亚洲同性gay激情无套| 亚洲成a天堂v人片| 黄色小说综合网站| 97久久久精品综合88久久| 91精品久久久久久久99蜜桃| 国产女人水真多18毛片18精品视频| 亚洲综合免费观看高清完整版在线 | 久久99热国产| 成人激情小说网站| 欧美美女视频在线观看| 久久久亚洲午夜电影| 一区二区理论电影在线观看| 国产一区二区在线看| 欧美在线小视频| 久久夜色精品国产噜噜av| 亚洲综合免费观看高清完整版| 国产美女视频一区| 欧美军同video69gay| 一区视频在线播放| 国产乱码精品一区二区三区忘忧草 | 99久精品国产| 欧美va在线播放| 亚洲国产精品久久人人爱| 国产电影一区在线| 日韩视频中午一区| 亚洲午夜久久久久久久久电影网| 高清免费成人av| 欧美v国产在线一区二区三区| 亚洲资源中文字幕| 99re在线精品| 国产精品日日摸夜夜摸av| 久久成人麻豆午夜电影| 在线观看91av| 午夜视频一区在线观看| 成人h版在线观看| 日韩精品一区二区三区四区视频| 一区二区三区波多野结衣在线观看 | 欧美成人福利视频| 久久亚洲综合av| 久久中文娱乐网| 水野朝阳av一区二区三区| 不卡av电影在线播放| 精品国产一区二区三区不卡 | 日韩三区在线观看| 一区二区激情小说| 色老汉一区二区三区| 亚洲图片另类小说| 色综合天天综合色综合av | 亚洲国产毛片aaaaa无费看| 99久久精品免费看| 亚洲欧洲国产日韩| 亚洲综合视频在线观看| 3d成人h动漫网站入口| 99久久婷婷国产综合精品| 国产精品一区在线观看你懂的| 欧美性大战久久久久久久蜜臀| 日韩欧美国产成人一区二区| 男男视频亚洲欧美| 51精品秘密在线观看| 丝袜诱惑制服诱惑色一区在线观看 | 6080午夜不卡| 青青国产91久久久久久| 日韩欧美国产wwwww| 国产一区二区成人久久免费影院 | 亚洲精品高清在线| 色综合天天综合网国产成人综合天| 国产精品你懂的在线欣赏| 懂色av一区二区三区免费看| 国产精品传媒入口麻豆| 色婷婷综合在线| 午夜视频一区二区| 337p日本欧洲亚洲大胆精品| 不卡视频一二三四| 亚洲一二三四在线| 日韩精品一区二区三区视频播放| 国产成人免费在线观看不卡| 亚洲激情六月丁香| 日韩精品一区二区三区四区视频 | 亚洲欧洲制服丝袜| 欧美一区二区三区思思人| 国产酒店精品激情| 亚洲在线视频网站| 2021国产精品久久精品| 91香蕉视频mp4| 亚洲国产精品天堂| 亚洲成av人在线观看| 成人sese在线| 午夜视频久久久久久| 精品久久久久久久久久久久久久久久久 | 亚洲精品乱码久久久久久日本蜜臀| 欧美在线不卡视频| 国产剧情一区二区| 天使萌一区二区三区免费观看| 国产亚洲成年网址在线观看| 欧美久久久久久久久久| 福利电影一区二区| 美女在线视频一区| 亚洲一二三四区不卡| 欧美韩日一区二区三区四区| 911国产精品| a亚洲天堂av| 欧美丰满少妇xxxxx高潮对白| 欧美三电影在线| 国产精品一区二区不卡| 亚洲精品国产视频| 日本一区二区三区在线不卡| 欧美日韩大陆一区二区| www.亚洲人| 国产在线视频不卡二| 天天亚洲美女在线视频| 亚洲激情五月婷婷| 国产精品免费看片| 久久久亚洲综合| 日韩一区二区麻豆国产| 欧美性高清videossexo| 97久久精品人人做人人爽 | 国产丶欧美丶日本不卡视频| 天天综合日日夜夜精品| 亚洲综合小说图片| 亚洲乱码国产乱码精品精的特点 | 国产清纯在线一区二区www| 99精品国产热久久91蜜凸| 国产伦精品一区二区三区视频青涩| 婷婷一区二区三区| 亚洲精品视频在线看| 中文字幕一区二区在线观看| 中文一区二区在线观看| 国产天堂亚洲国产碰碰| 国产亚洲综合色| 国产日韩欧美精品在线| 国产日本一区二区| 国产色综合久久| 国产精品视频yy9299一区| 国产精品久久福利| 伊人婷婷欧美激情| 亚洲一区二区视频在线观看| 亚洲地区一二三色| 爽好多水快深点欧美视频| 五月婷婷激情综合| 美美哒免费高清在线观看视频一区二区 | 国产精品毛片无遮挡高清| 亚洲精品一线二线三线| 精品国产91洋老外米糕| 精品99999| 欧美激情一区二区三区全黄| 国产精品色哟哟| 一区二区三区91| 人人狠狠综合久久亚洲| 另类小说综合欧美亚洲| 国产成人免费视频网站| 99视频在线精品| 在线观看亚洲成人| 欧美大胆一级视频|