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

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

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

    sunfruit[請?jiān)L問http://www.fruitres.cn]

    --我相信JAVA能走得更遠(yuǎn) QQ:316228067

    [原創(chuàng)]通過AJAX監(jiān)控文件上傳進(jìn)度

    ??? --sunfruit

    ???很多時候需要上傳附件到服務(wù)器,一般采用在頁面放置<input type="file" name="upload" value=""> 的方式讓用戶選擇要上傳的文件進(jìn)行上傳,使用的是HTTP協(xié)議,這樣的方式很方便開發(fā)也簡單,不過如果上傳的附件比較大的時候,會出現(xiàn)IE響應(yīng)很慢的情況,如果用戶急性子,多點(diǎn)幾下上傳的按鈕,那么就會導(dǎo)致IE不響應(yīng)的情況,這個時候如果在文件上傳得過程中,給用戶一個動態(tài)的提示甚至是一個上傳的進(jìn)度條,效果就會好多了,這樣就會用到Ajax技術(shù)了,讓Ajax以一個固定的間隔時間檢查上傳情況然后在頁面以文字或是圖片的方式體現(xiàn)出來就行了。
    ???在使用Ajax進(jìn)行附件上傳進(jìn)度查詢的時候也想過,直接使用Ajax進(jìn)行附件上傳,在實(shí)現(xiàn)過程中發(fā)現(xiàn)問題比較多,所以就使用了變通的方式:使用標(biāo)準(zhǔn)的附件上傳方式,結(jié)合Ajax進(jìn)行上傳的進(jìn)度檢查
    ???主要的代碼如下:
    ???Ajax的封裝
    ???/**
    ? * 創(chuàng)建 XMLHttpRequest 對象
    ? */
    ? function getXMLHttpRequest()
    ? {
    ??? var http_request;
    ??? if (window.XMLHttpRequest) {
    ????? //非IE瀏覽器框架創(chuàng)建 XMLHttpRequest 對象
    ????? http_request = new XMLHttpRequest();
    ????? if(http_request.overrideMimeType)
    ????? {
    ??????? http_request.overrideMimeType('text/xml');
    ????? }
    ??? }else if (window.ActiveXObject){
    ????? // 創(chuàng)建 XMLHttpRequest 對象
    ????? try {
    ??????? http_request = new ActiveXObject("Msxml2.XMLHTTP");
    ????? } catch (e1) {
    ??????? try {
    ????????? http_request = new ActiveXObject("Microsoft.XMLHTTP");
    ??????? } catch (e2) {
    ????????? // 不能創(chuàng)建 XMLHttpRequest 對象
    ??????? }
    ????? }
    ??? }
    ??? return http_request;
    ? }

    /**
    ?? * Get請求
    ?? */
    ? function sendGetDictate(http_request,url)
    ? {
    ??? req.open("GET", url, true);
    ??? http_request.send(null);
    ? }
    以上是Ajax的的基礎(chǔ)部分,下面說文件上傳部分的檢查部分,文件上傳本身的流程不變,只是在提交上傳以后,需要執(zhí)行setTimeout(checkupload,500); 這樣的方法 checkupload 方法要自己編寫,例如
    function checkupload()
    ? {
    ??? req=getXMLHttpRequest();
    ??? req.onreadystatechange = setActiveContent;
    ??? sendGetDictate(req,"/manager/servlet/imageservlet?tag=ajaxuploadfilecheck&WARE_ID=609187669&nocache="+Math.random(),"name=111");
    ? }
    然后需要編寫setActiveContent方法,例如
    var count=0; //防止無限循環(huán),并且在頁面提交上傳得時候設(shè)置為0
    function setActiveContent()
    ? {
    ??? if (req.readyState == 4) {
    ????? if (req.status == 200) {
    ??????? var rettext=req.responseText; //這里是servlet返回的內(nèi)容,檢查上傳得狀態(tài),可以在javabean或是servlet里面設(shè)置全局的靜態(tài)變量來表明上傳狀態(tài)
    ??????? if(rettext=="-1")
    ??????? {
    ????????? //停止循環(huán)
    ????????? alert("服務(wù)器更新錯誤");
    ??????? }
    ??????? else if(rettext=="0")
    ??????? {
    ????????? //繼續(xù)循環(huán)檢查
    ????????? if(count<6)
    ????????? {
    ??????????? setTimeout("checkupload()",500);
    ??????????? count++;
    ????????? }
    ????????? else
    ????????? {
    ??????????? alert("上傳失敗");
    ????????? }
    ??????? }
    ????????else if(rettext=="1")
    ??????? {
    ????????? alert("文件上傳成功");
    ??????? }
    ????? }
    ??? }
    ? }
    ?
    基本流程就是這樣了,至于文字表現(xiàn)上傳過程還是進(jìn)度條表現(xiàn),就看自己了

    posted on 2006-08-10 11:11 sunfruit 閱讀(2454) 評論(5)  編輯  收藏 所屬分類: Ajax

    評論

    # re: [原創(chuàng)]通過AJAX監(jiān)控文件上傳進(jìn)度 2006-08-11 22:31 endisoft

    這個也能監(jiān)控嗎?  回復(fù)  更多評論   

    # re: [原創(chuàng)]通過AJAX監(jiān)控文件上傳進(jìn)度 2006-08-17 13:29 sunfruit

    歐,不好意思,上次由于網(wǎng)絡(luò)斷了沒有寫完,現(xiàn)在已經(jīng)寫完了  回復(fù)  更多評論   

    # re: [原創(chuàng)]通過AJAX監(jiān)控文件上傳進(jìn)度 2006-12-12 14:08 Andycation

    這根本不是進(jìn)度!只不過一個狀態(tài)而已 就失敗和成功  回復(fù)  更多評論   

    # re: [原創(chuàng)]通過AJAX監(jiān)控文件上傳進(jìn)度 2006-12-13 12:42 sunfruit[匿名]

    進(jìn)度按照這個思路不就可以作了么,總文件大小和已經(jīng)上傳的大小的比例拉伸一個圖片就OK了  回復(fù)  更多評論   

    # re: [原創(chuàng)]通過AJAX監(jiān)控文件上傳進(jìn)度 2010-04-29 15:34 lingtianlan

    核心部分沒寫出來  回復(fù)  更多評論   


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


    網(wǎng)站導(dǎo)航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 亚洲国产精品免费在线观看| 中文亚洲AV片不卡在线观看| 色播亚洲视频在线观看| 免费无码午夜福利片| 国产精品色午夜视频免费看| 亚洲午夜无码久久久久软件| 久久久久免费看黄A片APP| 亚洲中文字幕一区精品自拍| 黄网站色在线视频免费观看| 亚洲国产av高清无码| av免费不卡国产观看| 亚洲一区二区三区91| 美女视频黄的全免费视频网站| 亚洲国产模特在线播放| 免费观看激色视频网站bd| 亚洲精品在线不卡| 国产一卡2卡3卡4卡2021免费观看| 亚洲一级大黄大色毛片| 成人免费男女视频网站慢动作| 亚洲国产一区二区三区在线观看| 在线观看人成视频免费| 美女被羞羞网站免费下载| 久久精品夜色噜噜亚洲A∨| 免费一区二区无码东京热| 内射干少妇亚洲69XXX| 国产免费久久精品99re丫y| 亚洲国产精品18久久久久久| 四虎影视在线永久免费看黄| 日韩免费在线中文字幕| 亚洲成色WWW久久网站| 在线视频精品免费| 色天使色婷婷在线影院亚洲| 亚洲色精品aⅴ一区区三区| 最近中文字幕大全中文字幕免费 | 亚洲国产成人VA在线观看| 国产精品免费久久久久影院| 久久亚洲sm情趣捆绑调教 | 亚洲国产精品第一区二区三区| 中文字幕版免费电影网站| 亚洲精品在线不卡| 国产一区二区三区在线观看免费|