ファイルごとにサーバー ファイルにアップロードし、ファイル アップロードの進行状況を示す進行状況バーを表示するシステムがあります。次に、2 番目の進行状況バーの下に、アップロード待ちのすべてのファイルで完了したバッチのパーセンテージを示します。
私が解決できる情報とアルゴリズムは次のとおりです。
送信バイト数 / 送信する合計バイト数 = 最初の進行状況バー (例: 1024KB のうち 512KB (50%))
それはうまくいきます。ただし、アップロードするファイルが他に 2 つ残っているとしますが、両方のファイル サイズは不明です (これは、ファイルがアップロードを開始しようとしているときにのみわかり、その時点で圧縮され、ファイル サイズが決定されるため)、どのように作成しますか?私の3番目の進行状況バー?
最初のプログレス バーのロジックを大規模に複製するには、「Total Bytes Sent」/「Total Bytes To Send」が必要になるため、これが可能になるとは思いませんでしたが、動作するバージョンを取得しました。現在のファイル番号" / "送信するファイルの総数" はバッチ全体のパーセンテージを返しますが、明らかに増分更新は行われず、かなり粗雑です。
したがって、さらに考えてみると、現在のファイル % をこのアルゴリズムに組み込むことができれば、おそらくバッチの現在のポイントの正しい進捗率を取得できると思いました。
私はこのアルゴリズムを試しましたが、残念ながらそのような役に立ちませんでした (数学の頭には申し訳ありませんが、なぜ機能しないのかはおそらく明らかです)。
("Current file number we are on" / "total number of files to send") * ("Bytes Sent" / "Total Bytes To Send")
たとえば、この例でテストしたとき、私は正しい軌道に乗っていると思いました: 2/3 (3 番目のファイルの 2 番目) = 66% (これは今のところ正しいです)。ファイルがアップロードされました)、13% に戻りました。必要なのは 33% 強だけです。私は 0.80 と a (2/3 * (2/3 * 0.2)) で逆を試しました
これは、アップロードするバッチ内のバイト全体を知らなくても実行できますか?
助けてください!ありがとうございました!