3

我一直在使用 uploadify 处理文件上传脚本,该脚本计算上传的剩余时间。Uploadify 提供了一个名为 onUploadProgress 的回调,它为我提供了有关当前上传的一些信息。

我有这个工作在一定程度上,但问题在于野生动物园。剩余时间脚本不准确,它会在大文件上剩余 10 到 20 分钟之间跳跃 - 这是可以接受的。在 Safari 上,偏差是巨大的,它会在剩余 0 到 300 分钟之间移动,即使是小的上传也是如此。

我的想法是通过将每个进度(总计)的 timeLeft 值相加来平均剩余时间,并将值增加 1(numberofpolls),因此可以通过 total/numberofpolls 计算平均值。

下面的代码包含 CalcTime 的函数和 onUploadProgress 的回调。

var total = 0;
var numberofpolls = 0;
var avg = 0;    

function CalcTime(newTime)
{




    total += parseFloat(newTime);

    numberofpolls++;

    avg = (total / numberofpolls);

    return avg;
}

...



'onUploadProgress' : function(file, bytesUploaded, bytesTotal, totalBytesUploaded, totalBytesTotal) {

     // remaining amount of bytes in upload            
     var remaining = totalBytesTotal - totalBytesUploaded;

     // approx amount of time left.         
     var timeLeft = (((remaining - (Date.now() - timeStarted) * this.queueData.averageSpeed) / this.queueData.averageSpeed) /60)/1000;

     var tmp_time = CalcTime(timeLeft );


     if (tmp_time<=1)
        var suffix = "Less than a minute remaining";
      else
        var suffix = ~~(tmp_time)+ ' minute(s) remaining';
}

问题不在于 timeLeft 的计算 - 因为这在以前有效,问题是通过 CalcTime 平均 timeLeft 的值。如果有更好的方法来阻止 safari 这样做,或者有更好的计算方法,我们将不胜感激。

提前致谢。

4

0 回答 0