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