4

xhr 進行状況イベントを使用して進行状況バーを更新したいと考えています。

次のコードがあります。

  xhr: function() {
    var xhr = Ember.$.ajaxSettings.xhr();
    xhr.upload.addEventListener("progress", function(e){
      if (e.lengthComputable) {
        self.didProgress(e);
      }
    }, false);
    return xhr;
  },

問題は、イベントが 1 回しか発生しないことです。これは、サーバー コールがクロス ドメインであるために発生していると考えられます。

これを正しく機能させるために、ヘッダーを介してサーバーに何を設定する必要があるか知っている人はいますか?

4

1 に答える 1

1

私の知る限り、これはクロスドメイン リクエストであることとは何の関係もありません。通常、Apache では、ファイル全体を 1 つのチャンクでアップロードするため (おそらく)、progress イベントが複数回発生することはありません。これは、 apache-upload-progress-module のようなモジュールを使用しない場合の通常の動作です。

過去にモジュールを使用せずにこれを達成した方法は、クライアント側でファイルをチャンクに分割することでした (File API と Blob を使用)。最初のチャンクが送信され、サーバーの応答を待ち、中断したところから 2 番目のチャンクが送信され、アップロードするチャンクがなくなるまで続きます。

これについては、ウェブ上でいくつかの例があります。JQuery File Uploadがどのようにそれを行うかを見てみたいと思うかもしれません。

これが役立つことを願っています。

于 2015-02-15T18:55:02.997 に答える