javascript文件上传平均时间剩余问题

时间:2012-11-20 12:52:23

标签: javascript jquery file upload average

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

我有一定程度的工作,但问题出在safari上。剩余时间的脚本不准确,它会在大型文件中剩余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这样做,或者更好的计算方法,那么任何帮助都会受到赞赏。

提前致谢。

0 个答案:

没有答案