2012-03-11 155 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