欢迎光临
我的个人博客网站

ajax获取上传进度

找了好久的获取上传进度—记录一下

原文地址https://blog.csdn.net/Irene1991/article/details/80773346

$.ajax({   type: "post",   url: uploadUrl,   data: formData,   processData: false,   contentType: false,   xhr : function() { //获取ajaxSettings中的xhr对象,为它的upload属性绑定progress事件的处理函数     myXhr = $.ajaxSettings.xhr();     if (myXhr.upload) { //检查upload属性是否存在      //绑定progress事件的回调函数       myXhr.upload.addEventListener(         'progress',         progressHandlingFunction,         false);       }       return myXhr; //xhr对象返回给jQuery使用     },   beforeSend: function() {     ot = new Date().getTime();   //设置上传开始时间     oloaded = 0;//设置上传开始时,以上传的文件大小为0     console.log("开始上传")   },   success: function (data) {     console.log("上传成功")   },   error: function (e) {     console.log("上传失败")   } }); function progressHandlingFunction(evt) {     var nt = new Date().getTime();//获取当前时间     var pertime = (nt-ot)/1000; //计算出上次调用该方法时到现在的时间差,单位为s     ot = new Date().getTime(); //重新赋值时间,用于下次计算     var perload = evt.loaded - oloaded; //计算该分段上传的文件大小,单位b     oloaded = evt.loaded;//重新赋值已上传文件大小,用以下次计算     //上传速度计算     var speed = perload/pertime;//单位b/s     var bspeed = speed;     var units = 'b/s';//单位名称     if(speed/1024>1){         speed = speed/1024;         units = 'k/s';     }     if(speed/1024>1){         speed = speed/1024;         units = 'M/s';     }     speed = speed.toFixed(1);     //剩余时间     var resttime = ((evt.total-evt.loaded)/bspeed).toFixed(1);     var percent = evt.loaded / evt.total * 100;     console.log('当前速度:'+speed+units+',剩余时间:'+resttime+'s,当前进度:'+percent.toFixed(2)+"%") }

赞(0) 打赏
未经允许不得转载:张拓的天空 » ajax获取上传进度
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

专业的IT技术经验分享 更专业 更方便

联系我们本站主机

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏