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

非常に役に立っ... –

1

uploadSpeedが一定ではないため、timeStarted変数は実際には必要ありません。アップロードされたバイト数をよりよく監視することができます。 `loaded`と` total`:

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

は、どのように私はあなたが必要とする2つの特性を有しアップロード – Till

+0

@Till 'XMLHttpRequest.upload.onprogress'イベントの量を検出することができます –