アップロードの残り時間を計算する uploadify を使用して、ファイル アップロード スクリプトに取り組んでいます。Uploadify は onUploadProgress と呼ばれるコールバックを提供します。これにより、現在のアップロードに関する情報が得られます。
これはある程度機能していますが、問題はサファリにあります。スクリプトの残り時間は正確ではありません。たとえば、大きなファイルの残り時間は 10 分から 20 分の間で飛び跳ねますが、これは許容範囲です。Safari では偏差が非常に大きく、小さなアップロードでも残り 0 ~ 300 分の間で変動します。
私が考えていたのは、各進行状況 (total) の timeLeft 値を合計し、値を 1 ずつ増やす (numberofpolls) ことによって、残り時間を平均化することでした。
以下のコードには、CalcTime の関数と onUploadProgress のコールバックが含まれています。
var total = 0;
var numberofpolls = 0;
var avg = 0;
function CalcTime(newTime)
{
total += parseFloat(newTime);
numberofpolls++;
avg = (total / numberofpolls);
return avg;
}
...
'onUploadProgress' : function(file, bytesUploaded, bytesTotal, totalBytesUploaded, totalBytesTotal) {
// remaining amount of bytes in upload
var remaining = totalBytesTotal - totalBytesUploaded;
// approx amount of time left.
var timeLeft = (((remaining - (Date.now() - timeStarted) * this.queueData.averageSpeed) / this.queueData.averageSpeed) /60)/1000;
var tmp_time = CalcTime(timeLeft );
if (tmp_time<=1)
var suffix = "Less than a minute remaining";
else
var suffix = ~~(tmp_time)+ ' minute(s) remaining';
}
問題は timeLeft の計算ではありません - これは以前に機能していたので、問題は CalcTime を介して timeLeft の値を平均化することです。サファリがこれを行うのを止めるより良い方法、またはそれを計算するより良い方法があれば、助けていただければ幸いです。
前もって感謝します。