我能够执行分块的XHR请求,获取Range
标头指定的文件。但是,使用单个XHR请求一次下载整个文件时,文件传输总是可能更快,而不是使用自己的XHR请求实现获取的块。
我想知道的是,如果我开始直接下载,有没有办法在下载完成之前访问正在下载的二进制数据?有一个progress
处理程序,用于报告当前下载的总大小和数量。有没有办法访问已下载的全部或部分数据?
基本上,当传输正在进行时,我需要能够将文件分成块并对其执行操作。我不能等到下载完成才能执行此操作。我还需要尽可能快地下载,这就是为什么分块机制不理想,似乎它总是会变慢。
答案 0 :(得分:1)
您现在可以使用xhr.response
或xhr.responseText
获得回复。 仅适用于文字数据。
示例:
var xhr = new XMLHttpRequest();
xhr.addEventListener("progress", function (){ //could be .onprogress also
console.log(xhr.response);
});
xhr.open(someMethod, someUrl);
xhr.send();
重要提示:.response
包含完整响应,而非自上次进度事件以来加载的部分
对于二进制数据,有moz-blob
和moz-chunked-arraybuffer
responseTypes,但它不是标准化的。