3

アップロードの残り時間を計算する 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 の値を平均化することです。サファリがこれを行うのを止めるより良い方法、またはそれを計算するより良い方法があれば、助けていただければ幸いです。

前もって感謝します。

4

0 に答える 0