jQuery監(jiān)聽文件上傳實(shí)現(xiàn)進(jìn)度條效果的方法
原理:
給XMLHttpRequest對(duì)象的upload屬性綁定onprogress方法監(jiān)聽上傳過(guò)程
var xhr=new XMLHttpRequest(); xhr.upload.onprogress=function(e){}
因?yàn)閖Query默認(rèn)使用的XMLHttpRequest對(duì)象是內(nèi)部生成的無(wú)法直接給jq的xhr綁定onprogress方法
所以只要給jQuery重新生成一個(gè)綁定了onprogress的XMLHttpRequest對(duì)象即可實(shí)現(xiàn)
首先封裝一個(gè)方法 傳入一個(gè)監(jiān)聽函數(shù) 返回一個(gè)綁定了監(jiān)聽函數(shù)的XMLHttpRequest對(duì)象
var xhrOnProgress=function(fun) {
xhrOnProgress.onprogress = fun; //綁定監(jiān)聽
//使用閉包實(shí)現(xiàn)監(jiān)聽綁
return function() {
//通過(guò)$.ajaxSettings.xhr();獲得XMLHttpRequest對(duì)象
var xhr = $.ajaxSettings.xhr();
//判斷監(jiān)聽函數(shù)是否為函數(shù)
if (typeof xhrOnProgress.onprogress !== 'function')
return xhr;
//如果有監(jiān)聽函數(shù)并且xhr對(duì)象支持綁定時(shí)就把監(jiān)聽函數(shù)綁定上去
if (xhrOnProgress.onprogress && xhr.upload) {
xhr.upload.onprogress = xhrOnProgress.onprogress;
}
return xhr;
}
}
上傳時(shí)使用$.ajax方法
$.ajax({
url: url,
type: 'POST',
xhr:xhrOnProgress(function(e){
var percent=e.loaded / e.total;//計(jì)算百分比
})
});
使用HW.js文件上傳工具 自帶進(jìn)度條效果 支持綁定自定義監(jiān)聽函數(shù),支持上傳實(shí)時(shí)預(yù)覽(HTML5實(shí)現(xiàn) 無(wú)需服務(wù)器)HW.js
<div id="cover" class="HW_upload">請(qǐng)選擇要上傳的文件</div>
<script>
var upload= new HW.Widget.upload.Create({
target:'#cover',//指定上傳控件
url:"/upload.php",//上傳地址
//設(shè)置允許上傳的文件大小 單位為kb 默認(rèn)為 4096
maxSize:2048,
//開啟多文件上傳
mult:false,
//設(shè)置上傳按鈕的文字
uploadText:'請(qǐng)選擇要上傳的文件',
//設(shè)置上傳超時(shí)限制 單位為分鐘 默認(rèn)為20分鐘
timeout:20,
//設(shè)置允許上傳的文件類型 默認(rèn)為['png','jpg','jpeg']
// accept:['jpg'],
//設(shè)置文件上傳參數(shù)名 默認(rèn)為HW_upload_input
inputName:'cover',
//設(shè)置控件為圖片上傳 默認(rèn)為true 為false時(shí)則不開啟文件預(yù)覽
isImage:true,
//自定義文件檢查函數(shù) 默認(rèn)檢測(cè)文件大小 類型
// fileCheck:function(file){return true;},
viewSize:[500,300],//設(shè)置圖片預(yù)覽框?qū)捀?默認(rèn)為400,300
viewImageWidth:70,//設(shè)置預(yù)覽圖片寬度默認(rèn)為80
done:function(data){
alert(data);//獲得上傳結(jié)束后服務(wù)器返回的數(shù)據(jù)
}
});
以上就是小編為大家?guī)?lái)的jQuery監(jiān)聽文件上傳實(shí)現(xiàn)進(jìn)度條效果的方法全部?jī)?nèi)容了,希望大家多多支持腳本之家~
- jquery 簡(jiǎn)單的進(jìn)度條實(shí)現(xiàn)代碼
- 6款新穎的jQuery和CSS3進(jìn)度條插件推薦
- 分享8款優(yōu)秀的 jQuery 加載動(dòng)畫和進(jìn)度條插件
- jquery實(shí)現(xiàn)的一個(gè)簡(jiǎn)單進(jìn)度條效果實(shí)例
- 基于HTML5 Ajax文件上傳進(jìn)度條如何實(shí)現(xiàn)(jquery版本)
- Javascript jquery css 寫的簡(jiǎn)單進(jìn)度條控件
- jQuery EasyUI API 中文文檔 - ProgressBar 進(jìn)度條
- jQuery實(shí)現(xiàn)文件上傳進(jìn)度條特效
- 利用jQuery實(shí)現(xiàn)漂亮的圓形進(jìn)度條倒計(jì)時(shí)插件
- jquery實(shí)現(xiàn)百分比記分進(jìn)度條
相關(guān)文章
jQuery Selectors(選擇器)的使用(九、表單對(duì)象屬性篇)
本系列文章主要講述jQuery框架的選擇器(Selectors)使用方法,我將以實(shí)例方式進(jìn)行講述,以簡(jiǎn)單,全面為基礎(chǔ),不會(huì)涉及很深,我的學(xué)習(xí)方法:先入門,后進(jìn)階!2009-12-12
jquery DataTable實(shí)現(xiàn)前后臺(tái)動(dòng)態(tài)分頁(yè)
本篇文章主要介紹了jquery DataTable實(shí)現(xiàn)前后臺(tái)動(dòng)態(tài)分頁(yè)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06
jQuery多個(gè)input求和的實(shí)現(xiàn)方法
這篇文章主要介紹了jQuery多個(gè)input求和的實(shí)現(xiàn)方法,涉及jQuery獲取input表單元素值及運(yùn)算的相關(guān)技巧,需要的朋友可以參考下2015-02-02

