2012-03-11 115 views
3

我正在使用Uploadify插件允许用户上传文件,并且我有进度条工作。现在我想给用户估计时间直到完成,但我不确定如何使用Javascript计算它。假设我有以下变量:uploadSpeed(以kb/s为单位),timeStarted(Javascript日期对象?),fileSize(以字节为单位的文件大小)。如何在文件完全上传之前计算倒计时?计算上传的剩余时间

回答

1

这只是一个数学问题吗?如果是这样,请使用timeStarted和timeNow之间的差异,将其与uploadSpeed相乘,取结果并从fileSize中减去它,然后将其除以uploadSpeed。这是你的剩余时间(假设uploadSpeed在任何时候都是不变的)。

(fileSize - (timeNow - timeStarted) * uploadSpeed)/uploadSpeed 

但一种更准确的方法是取实际上传的字节数来计算剩余时间。这应该没有问题,因为用户正在上传文件到您的服务器。因此,您可以从服务器读取部分文件大小。

7
var uploadedSoFar = uploadSpeed * (Date.now() - timeStarted.milliseconds)/1000; 
var timeRemaining = ((fileSize - uploadedSoFar)/uploadSpeed) + ' seconds'; 
+0

非常有帮助... – 2015-03-09 22:24:01

1

因为uploadSpeed不是常量,所以您不需要timeStarted变量,您最好监视上传的字节数。

var uploaded // ammount of bytes uploaded 
setInterval("updateProgress()", 1000) //every second updates the uploaded counter 
function updateProgress(){ 
    uploaded += uploadSpeed //increments the ammount of bytes uploaded in a second 
    updateProgressBar((uploaded/fileSize)*100) // update progress bar 
} 
+0

如何检测上传 – Till 2013-03-04 22:01:24

+0

@Till'XMLHttpRequest.upload.onprogress'事件中有2个属性,你所需要的水量:'loaded'和'total' – 2014-01-14 13:27:33