13

HTML5アップロードをうまく機能させようとしています。これまでのところ、問題なく正常に動作しています。私が抱えている唯一の問題は次のようになります (Firefox ブラウザーのみ - Chrome は正常に動作します):

  1. ページを読み込む
  2. 非常に大きなファイル (1GB 以上) をアップロードしようとする
  3. アップロードの開始に非常に長い時間がかかり、進行がうまくいかず、ファイルを 2 回アップロードしているように見える

手順 1 と 2 の間に小さなファイルをアップロードすると、大きなファイルのアップロードが適切に開始され、進行状況が良好に示されます。

これを体験するには、デモ ページhttp://exposureroom.biz/upload.aspxで上記の手順を試すだけです。デモ ページは、HTML5 アップロードのよく知られた例からのものです: http://www.matlus.com/html5-file-upload-with-progress/。自分で書いたわけではありませんが、私のスクリプトと同じように動作し、アクセス可能です。

これはブラウザのバグですか?誰もこれに遭遇したことがありますか?

ありがとう

4

3 に答える 3

12

これはブラウザのバグではなく、アップロード プログラムのバグだと思います。1GB と 2GB のファイルをアップロードしてテストしたところ、アップロードはまったく待たずにすぐに開始されました。

テストが有効であることを確認してください。ただし、次の予期しない動作が見つかりました。

ケース 1:
1. 1G ファイルのアップロードを開始します
2. アップロードが正常に開始され、進行状況は正常です
3. アップロードが完了する前に、[参照] をクリックして 2G ファイルをアップロードします
4. アップロードが正常に開始され、進行状況がめちゃくちゃです。負の速度などを示しています。

ケース 2:
1. 2G ファイルのアップロードを開始します
2. アップロードが正常に開始され、進行状況は正常です
3. アップロードが完了する前に、[参照] をクリックして 1G ファイルをアップロードします
4. アップロードが正常に開始され、進行状況がめちゃくちゃです。負の速度などを示しています。

ケース 3:
1. 1G ファイルのアップロードを開始します
。 2. アップロードは正常に開始され、進行は正常です。
3. 新しいタブを開始し、2G ファイルのアップロードを開始します
。 4. アップロードが正常に開始され、進行状況は正常です。

あなたのプログラムは最初の 2 つのテスト ケースを処理していないようですが、ブラウザのバグではないようです。

ファイルの開始時にアップロード ボタンを無効にする前に、「キャンセル」アップロードが機能しない理由を調べてください (実装している場合)。クライアント側でhtml5を使用してファイルのアップロードをキャンセルすることに成功したようです。

于 2012-04-18T07:00:45.820 に答える
2

これは Firefox のバグではなく、プログラムのバグです。Mac 上の FF 11.0 および Chrome 18.0.1025.151 で @Ray Cheng の動作を再現しました。どちらのブラウザーでも OP の問題を再現しませんでしたが、プログラムのフィードバックが壊れていたために何が起こっているのかについての誤解に基づいていたと思われます。

2 番目のファイルのアップロードが最初のファイルのアップロードをキャンセルせず、2 つのアップロードが同じ進行状況バーを更新し、同じ値の一部 (たとえば、最後にアップロードされたファイルのファイル サイズ) といくつかの値を使用しているため、Ray のテストは明らかに失敗します。一意の値 (たとえば、この特定のアップロードが完了したバイト)。またはそのようなもの。コードを深く掘り下げることはしませんでしたが、これを見つけました (これらの変数はグローバルXMLHttpRequestスコープにありますが、アップロードを実行するオブジェクトによって生成されたイベントによって更新されることに注意してください)。

  var bytesUploaded = 0;
  var bytesTotal = 0;
  var previousBytesLoaded = 0;
  var intervalTimer = 0;

現在のシステムの明らかな問題の 1 つは、大きなファイルのアップロードを開始してから小さなファイルのアップロードを開始すると、最初のファイルのアップロードが失敗することは言うまでもなく、小さなファイルのアップロードが終了した後に、以下に示すようなばかげたフィードバックが返されることです。(アップロードされたファイルのサイズと比較したアップロードのサイズと割合に注意してください。)

スクリーンショット

まず、これらの問題が修正されるまで、アップロードの進行中は [参照/ファイル選択] ボタンを無効にすることをお勧めします。

于 2012-04-22T04:56:06.153 に答える
0

私はあなたの問題の解決策を得ました。大きなファイルをアップロードするには、ファイル API スライス呼び出しを使用してファイルをチャックする必要があり、リクエストを処理するには、計算パフォーマンスを向上させるために webworkers を使用する必要があります。

于 2012-08-06T11:04:19.267 に答える