4

我想使用 xhr 进度事件更新进度条。

我有以下代码:

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

问题是该事件只发生一次,我相信这是因为服务器调用是跨域的。

有人知道我必须通过标头在服务器上设置什么才能使其正常工作吗?

4

1 回答 1

1

据我所知,这与跨域请求无关。通常,在 Apache 上,您不会多次触发进度事件,因为(我假设)您将整个文件上传到一个块中。这是不使用像apache-upload-progress-module这样的模块的正常行为

过去我在没有模块的情况下实现这一点的方法是在客户端将文件拆分为块(使用文件 API 和 Blob)。第一个块被发送,等待服务器响应,从它离开的地方发送第二个块,依此类推,直到没有更多的块要上传。

网络上有一些这样的例子。您可能想看看JQuery File Upload是如何做到的。

我希望这有帮助。

于 2015-02-15T18:55:02.997 回答