欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

jQuery監(jiān)聽文件上傳實(shí)現(xiàn)進(jìn)度條效果的方法

 更新時間:2016年10月16日 10:41:21   投稿:jingxian  
下面小編就為大家?guī)硪黄猨Query監(jiān)聽文件上傳實(shí)現(xiàn)進(jìn)度條效果的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

原理:

給XMLHttpRequest對象的upload屬性綁定onprogress方法監(jiān)聽上傳過程

var xhr=new XMLHttpRequest(); xhr.upload.onprogress=function(e){}

因?yàn)閖Query默認(rèn)使用的XMLHttpRequest對象是內(nèi)部生成的無法直接給jq的xhr綁定onprogress方法

所以只要給jQuery重新生成一個綁定了onprogress的XMLHttpRequest對象即可實(shí)現(xiàn)

首先封裝一個方法 傳入一個監(jiān)聽函數(shù) 返回一個綁定了監(jiān)聽函數(shù)的XMLHttpRequest對象

var xhrOnProgress=function(fun) {
  xhrOnProgress.onprogress = fun; //綁定監(jiān)聽
  //使用閉包實(shí)現(xiàn)監(jiān)聽綁
  return function() {
    //通過$.ajaxSettings.xhr();獲得XMLHttpRequest對象
    var xhr = $.ajaxSettings.xhr();
    //判斷監(jiān)聽函數(shù)是否為函數(shù)
    if (typeof xhrOnProgress.onprogress !== 'function')
      return xhr;
    //如果有監(jiān)聽函數(shù)并且xhr對象支持綁定時就把監(jiān)聽函數(shù)綁定上去
    if (xhrOnProgress.onprogress && xhr.upload) {
      xhr.upload.onprogress = xhrOnProgress.onprogress;
    }
    return xhr;
  }
}

上傳時使用$.ajax方法

$.ajax({
  url: url,
  type: 'POST',
  xhr:xhrOnProgress(function(e){
    var percent=e.loaded / e.total;//計算百分比
  })
});

使用HW.js文件上傳工具 自帶進(jìn)度條效果 支持綁定自定義監(jiān)聽函數(shù),支持上傳實(shí)時預(yù)覽(HTML5實(shí)現(xiàn) 無需服務(wù)器)HW.js

<div id="cover" class="HW_upload">請選擇要上傳的文件</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:'請選擇要上傳的文件',
  //設(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時則不開啟文件預(yù)覽
  isImage:true,
  //自定義文件檢查函數(shù) 默認(rèn)檢測文件大小 類型
  // 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ī)淼膉Query監(jiān)聽文件上傳實(shí)現(xiàn)進(jìn)度條效果的方法全部內(nèi)容了,希望大家多多支持腳本之家~

相關(guān)文章

最新評論