可能的二进制数据的部分XHR响应读数?

bjo*_*rnl 7 javascript binary xmlhttprequest stream arraybuffer

我目前正在研究用二进制数据读取部分XHR响应的可能性.我们当前的方法基于'responseText'属性和base64编码.显然,这远非最佳.

我们如何使用XHR读取部分Blob/ArrayBuffer响应?当我在Chrome中尝试时,整个ArrayBuffer/Blob在readyState = 4时可用,但在此之前不可用.

总而言之,在我看来:

  • 读取XHR的responseText属性:可以在readyState = 4之前读取响应,并且我们可以将base64编码的二进制数据流回客户端
  • 使用responseType ='arraybuffer'读取XHR的响应属性:没有部分响应读取,但是当readyState = 4时整个缓冲区可用

我在这里错过了什么吗?我们可以采取什么方法来阅读部分二元响应?

bri*_*rls 5

有一种方法,虽然它还不是标准的.Firefox允许您responseType在XHR 上设置为"moz-blob","moz-chunked-text"或"moz-chunked-arraybuffer",具体取决于哪一个适合您.然后,当您收听progress事件时,您将能够访问部分数据.MDN在此处此处有更多信息.

Chrome将支持Streams API,但还没有准备好.Firefox也可能最终支持它.我读过IE已经在某处,虽然我似乎无法找到任何官方文档来证实这一点.