xhr上传进度事件仅触发一次

时间:2013-09-01 21:18:45

标签: javascript xmlhttprequest cross-domain cors

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

我有以下代码:

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

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

是否有人知道我必须通过标头在服务器上设置什么才能让它正常工作?

1 个答案:

答案 0 :(得分:1)

据我所知,这与跨域请求无关。通常情况下,在Apache上,你不会获得一次进度事件,因为(我假设)你将整个文件上传到一个块中。这是不使用像apache-upload-progress-module

这样的模块的正常行为

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

网上有一些这方面的例子。您可能想看看JQuery File Upload如何做到这一点。

我希望这会有所帮助。