XMLHttpRequest 分割上传文件显示进度

 

 xhr = new XMLHttpRequest();

 var clock = null;

 

 //file选择,触发定时器函数

 function upload(){

     clock = window.setInterval(selectfile,1000);

     //定时1s

 }

 

 //闭包函数

 var selectfile = (function(){

 

     const LENGTH = 1*1024*1024;//每次截取的长度

     var sta = 0;                //从零处开始截取

     var end = sta +LENGTH;

     var flag = false;    //表示上一块是否发送完毕

     var blob = null;

     var fd = null;

     var percent = 0;

 

         //匿名函数

     return(function (){

 

         if(flag == true){    //是否正在上传

             return;

         }

         flag = true;

         var mov = document.getElementById('pdfFile').files[0];/* blob对象 */

 

 var proId=document.getElementById('projectId').value;

         

         fd = new FormData();

         blob = mov.slice(sta,end);

         fd.append('pdfFile',blob);

 fd.append('proId',proId);

         up(fd);

 

         //如果sta > mov.size 就结束

         if(sta >= mov.size){

             clearInterval(clock);    //清除定时

             return ;

         }

         sta = end;

         end = sta + LENGTH;

         flag = false;    //上传完毕

         

         percent = 100 * end /mov.size ;

         percent = percent >= 100 ? 100 : percent;

 

         percent=percent.toFixed(2);

 

        var son =  document.getElementById('son');  

         son.innerHTML = percent+"%";  

         son.style.width=percent+"%";  

 

     });

 })();

 

 

 

function up(fd){

 

    xhr.open("post","<?= site_aurl($tablefunc.'/upload') ?>",false);  

    xhr.send(fd);

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值