XHR上传进度事件只触发一次

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
在跨源请求的服务器响应中,不需要返回任何通常不需要返回的内容。如果您对此过程不熟悉,是否查看过 https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS? - Ray Nicholus
1个回答

1
据我所知,这与跨域请求无关。通常,在Apache上,您不会多次触发进度事件,因为(我猜)您将整个文件作为一个块上传。这是在没有使用apache-upload-progress-module等模块的情况下的正常行为。
我过去在没有模块的情况下实现这一点的方法是在客户端(使用File API和Blobs)上将文件分成块。第一个块被发送,等待服务器响应,从离开的地方发送第二个块,依此类推,直到没有更多块需要上传。
网上有一些示例。您可能想看看JQuery File Upload如何处理。
希望这可以帮助到您。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接