计算上传的剩余时间

时间:2012-03-11 12:52:59

标签: javascript upload uploadify countdown

我正在使用Uploadify插件允许用户上传文件,我的进度条工作正常。现在我想给用户一个估计的时间直到完成,但我不确定如何使用Javascript计算它。

假设我有以下变量:uploadSpeed(以kb / s为单位),timeStarted(一个Javascript日期对象?),fileSize(文件大小,以字节为单位)。如何在文件完全上传之前计算倒计时?

3 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

你真的不需要timeStarted变量,因为uploadSpeed不是常量,你可以更好地监控上传的字节数。

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
}