亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識(shí)庫(kù) > 基于Ajax技術(shù)實(shí)現(xiàn)文件上傳帶進(jìn)度條

基于Ajax技術(shù)實(shí)現(xiàn)文件上傳帶進(jìn)度條

熱門標(biāo)簽:地圖標(biāo)注項(xiàng)目怎么樣 機(jī)器人電銷騙局揭秘 個(gè)人怎樣在百度地圖標(biāo)注地名 超級(jí)大富翁地圖標(biāo)注 騰訊地圖標(biāo)注位置能用多久 硅語電話機(jī)器人公司 越南河內(nèi)地圖標(biāo)注 ai機(jī)器人電銷資源 云呼外撥網(wǎng)絡(luò)電話系統(tǒng)

1.概述

在實(shí)際的Web應(yīng)該開發(fā)或網(wǎng)站開發(fā)過程中,經(jīng)常需要實(shí)現(xiàn)文件上傳的功能。在文件上傳過程中,經(jīng)常需要用戶進(jìn)行長(zhǎng)時(shí)間的等待,為了讓用戶及時(shí)了解上傳進(jìn)度,可以在上傳文件的同時(shí),顯示文件的上傳進(jìn)度條。運(yùn)行本實(shí)例,如圖1所示,訪問文件上傳頁面,單擊“瀏覽”按鈕選擇要上傳的文件,注意文件不能超過50MB,否則系統(tǒng)將給出錯(cuò)誤提示。選擇完要上傳的文件后,單擊“提交”按鈕,將會(huì)上傳文件并顯示上傳進(jìn)度。

2.技術(shù)要點(diǎn)

主要是應(yīng)用開源的Common-FileUpload組件來實(shí)現(xiàn)分段文件上傳,從而實(shí)現(xiàn)在上傳過程中,不斷獲取上傳進(jìn)度。下面對(duì)Common-FileUpload組件進(jìn)行詳細(xì)介紹。

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

(1)創(chuàng)建上傳對(duì)象

在應(yīng)該Common-FileUpload組件實(shí)現(xiàn)文件上傳時(shí),需要?jiǎng)?chuàng)建一個(gè)工廠對(duì)象,并根據(jù)該工廠對(duì)象創(chuàng)建一個(gè)新的文件上傳對(duì)象,具體代碼如下:

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

(2)解析上傳請(qǐng)求

創(chuàng)建一個(gè)文件上傳對(duì)象后,就可以應(yīng)用該對(duì)象來解析上傳請(qǐng)求,獲取全部的表單項(xiàng),可以通過文件上傳對(duì)象的parseRequest()方法來實(shí)現(xiàn)。parseRequest()方法的語法結(jié)構(gòu)如下:

public List parseRequest(HttpServletRequest request) throws FileUploadException 

(3)FileItem類

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

3.具體實(shí)現(xiàn)

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

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

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

請(qǐng)選擇上傳的文件:input name="file" type="file" size="34">

注:文件大小請(qǐng)控制在50M以內(nèi)。

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實(shí)現(xiàn)類UpLpad。在該類中編寫實(shí)現(xiàn)文件上傳的方法uploadFile(),在該方法中通過Common-FileUpload組件實(shí)現(xiàn)分段上傳文件,并計(jì)算上傳百分比,實(shí)時(shí)保存到Session中,關(guān)鍵代碼如下:

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); //定義指定上傳進(jìn)度的Session變量
String error = "";
int maxSize=50*1024*1024; //單個(gè)上傳文件大小的上限
DiskFileItemFactory factory = new DiskFileItemFactory(); //創(chuàng)建工廠對(duì)象
ServletFileUpload upload = new ServletFileUpload(factory); //創(chuàng)建一個(gè)新的文件上傳對(duì)象
try {
List items = upload.parseRequest(request); // 解析上傳請(qǐng)求
Iterator itr = items.iterator(); // 枚舉方法
while (itr.hasNext()) {
FileItem item = (FileItem) itr.next(); //獲取FileItem對(duì)象
if (!item.isFormField()) { // 判斷是否為文件域
if (item.getName() != null  !item.getName().equals("")) {//是否選擇了文件
long upFileSize=item.getSize(); //上傳文件的大小
String fileName=item.getName(); //獲取文件名
if(upFileSize>maxSize){
error="您上傳的文件太大,請(qǐng)選擇不超過50M的文件";
break;
}
// 此時(shí)文件暫存在服務(wù)器的內(nèi)存中
File tempFile = new File(fileName); //構(gòu)造文件目錄臨時(shí)對(duì)象
String uploadPath = this.getServletContext().getRealPath("/upload");
File file = new File(uploadPath,tempFile.getName()); 
InputStream is=item.getInputStream();
int buffer=1024; //定義緩沖區(qū)的大小
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; //計(jì)算上傳文件的百分比
fos.write(b,0,length); //向文件輸出流寫讀取的數(shù)據(jù)
session.setAttribute("progressBar",Math.round(percent)); 
}
fos.close();
Thread.sleep(1000); //線程休眠1秒
} else {
error="沒有選擇上傳文件!";
}
}
}
} catch (Exception e) {
e.printStackTrace();
error = "上傳文件出現(xiàn)錯(cuò)誤:" + 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中,導(dǎo)入編寫的Ajax請(qǐng)求方法的request.js文件,并編寫獲取上傳進(jìn)度的Ajax請(qǐng)求方法和Ajax回調(diào)函數(shù),關(guān)鍵代碼如下:

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

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

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

(6)編寫表單提交按鈕onclick事件所調(diào)用的JavaScript方法,在該方法通過window對(duì)象的setInterval()方法每隔一定時(shí)間請(qǐng)求一次服務(wù)器,獲得最新的上傳進(jìn)度,關(guān)鍵代碼如下:

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

以上所述是小編給大家介紹的基于Ajax技術(shù)實(shí)現(xiàn)文件上傳帶進(jìn)度條的相關(guān)知識(shí),希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

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

標(biāo)簽:洛陽 邢臺(tái) 內(nèi)蒙古 鄭州 舟山 林芝 遼源 海南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《基于Ajax技術(shù)實(shí)現(xiàn)文件上傳帶進(jìn)度條》,本文關(guān)鍵詞  基于,Ajax,技術(shù),實(shí)現(xiàn),文件,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《基于Ajax技術(shù)實(shí)現(xiàn)文件上傳帶進(jìn)度條》相關(guān)的同類信息!
  • 本頁收集關(guān)于基于Ajax技術(shù)實(shí)現(xiàn)文件上傳帶進(jìn)度條的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    99久久精品国产免费| 日韩在线观看免费| 九九国产| 色综合久久久久综合体桃花网| 日韩专区亚洲综合久久| 久久国产精品自由自在| 99热精品在线| 日本免费看视频| 999久久久免费精品国产牛牛| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 成人影院一区二区三区| 精品国产一区二区三区久久久蜜臀 | 中文字幕一区二区三区精彩视频| 成人高清视频在线观看| 一级女性大黄生活片免费| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 尤物视频网站在线观看| 欧美激情一区二区三区在线| 国产美女在线观看| 久久国产精品只做精品| 免费一级片网站| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产视频在线免费观看| 免费一级片网站| 日日日夜夜操| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | a级精品九九九大片免费看| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产伦久视频免费观看 视频| 国产不卡在线观看| 欧美一级视| 日本伦理片网站| 日本伦理网站| 国产不卡精品一区二区三区| 九九热精品免费观看| 麻豆系列 在线视频| 亚洲第一页乱| 欧美大片aaaa一级毛片| 国产视频久久久久| 国产精品自拍一区| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产a网| 日本特黄特色aa大片免费| 青青久久精品国产免费看| 成人免费网站久久久| 日本特黄特黄aaaaa大片| 成人免费网站久久久| 久久福利影视| 久久久久久久免费视频| 国产综合91天堂亚洲国产| 日韩中文字幕在线亚洲一区| 国产一区免费在线观看| 国产福利免费视频| 可以免费在线看黄的网站| 久草免费在线视频| 毛片高清| 青青久热| 99久久精品国产免费| 日韩在线观看免费完整版视频| 香蕉视频亚洲一级| 欧美激情在线精品video| 成人免费高清视频| 国产精品1024永久免费视频 | 黄色免费网站在线| 四虎影视久久| 国产成人精品综合| 日韩在线观看免费| 国产视频一区二区三区四区| 国产精品1024永久免费视频| 成人高清视频在线观看| 国产精品1024永久免费视频 | 国产网站麻豆精品视频| 麻豆午夜视频| 色综合久久天天综合| 亚洲wwwwww| 欧美日本国产| 99久久网站| 久久精品店| 高清一级做a爱过程不卡视频| 欧美激情在线精品video| 日韩中文字幕在线亚洲一区| 国产麻豆精品免费密入口| 日本特黄特色aaa大片免费| 中文字幕97| 日本伦理片网站| 国产亚洲精品aaa大片| 999久久久免费精品国产牛牛| 天堂网中文字幕| 国产精品1024永久免费视频| 国产91素人搭讪系列天堂| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 九九国产| 久久成人亚洲| 999久久66久6只有精品| 国产91精品系列在线观看| 中文字幕Aⅴ资源网| 国产极品精频在线观看| 国产一区二区高清视频| 亚欧成人毛片一区二区三区四区| 色综合久久天天综合绕观看| 成人免费观看视频| 国产高清在线精品一区a| 欧美大片一区| 国产极品精频在线观看| 精品毛片视频| 99色精品| 韩国毛片免费| 欧美另类videosbestsex| 国产综合成人观看在线| 毛片高清| 日韩女人做爰大片| 午夜在线亚洲男人午在线| 亚洲精品影院| 中文字幕Aⅴ资源网| 欧美电影免费| 欧美激情影院| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 日本免费乱人伦在线观看 | 人人干人人插| 免费国产在线视频| a级毛片免费观看网站| 亚洲www美色| 你懂的日韩| 亚洲www美色| 国产一区二区精品久久| 一级女性全黄久久生活片| 午夜家庭影院| 黄色免费网站在线| 尤物视频网站在线观看| 欧美激情一区二区三区中文字幕| 成人影院久久久久久影院| 黄视频网站在线免费观看| 免费毛片播放| 中文字幕97| 欧美激情一区二区三区视频| 二级片在线观看| 日韩中文字幕一区| 欧美激情伊人| 四虎影视久久| a级黄色毛片免费播放视频| 午夜在线观看视频免费 成人| a级毛片免费全部播放| 精品久久久久久中文字幕2017| 久久国产影视免费精品| 九九九在线视频| 欧美日本国产| 国产亚洲精品aaa大片| 成人高清免费| 黄色免费网站在线| 欧美大片a一级毛片视频| 亚州视频一区二区| 久久国产精品永久免费网站| 成人免费观看的视频黄页| 精品国产亚洲一区二区三区| 免费毛片播放| 可以在线看黄的网站| 国产成a人片在线观看视频| 日韩一级黄色片| 国产91丝袜在线播放0| 成人免费一级纶理片| 韩国三级视频在线观看| 久久福利影视| 午夜家庭影院| 精品在线观看一区| 精品国产亚洲人成在线| 成人免费网站久久久| 国产网站免费视频| 韩国毛片| 日韩av成人| 美女免费精品视频在线观看| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 成人高清免费| 韩国毛片| 久久国产一久久高清| 亚洲 国产精品 日韩| 九九精品影院| 国产一级强片在线观看| 999久久狠狠免费精品| 韩国三级视频在线观看| 999久久66久6只有精品| 亚洲精品影院一区二区| 国产一级强片在线观看| 黄视频网站在线看| 色综合久久天天综线观看| 日本在线不卡视频| 四虎久久影院| 午夜激情视频在线播放| 日本免费看视频| 韩国三级视频在线观看| 色综合久久手机在线| 99色吧| 国产一级强片在线观看| 日韩av东京社区男人的天堂| 午夜欧美福利| 久久国产精品自线拍免费| 99久久精品国产免费| 一a一级片| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 欧美大片a一级毛片视频| 国产不卡在线观看|