XHR2文件传输。在`progress`事件处理程序期间访问二进制数据

时间:2015-09-15 13:28:56

标签: javascript html5 xmlhttprequest blob

我能够执行分块的XHR请求,获取Range标头指定的文件。但是,使用单个XHR请求一次下载整个文件时,文件传输总是可能更快,而不是使用自己的XHR请求实现获取的块。

我想知道的是,如果我开始直接下载,有没有办法在下载完成之前访问正在下载的二进制数据?有一个progress处理程序,用于报告当前下载的总大小和数量。有没有办法访问已下载的全部或部分数据?

基本上,当传输正在进行时,我需要能够将文件分成块并对其执行操作。我不能等到下载完成才能执行此操作。我还需要尽可能快地下载,这就是为什么分块机制不理想,似乎它总是会变慢。

1 个答案:

答案 0 :(得分:1)

您现在可以使用xhr.responsexhr.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-blobmoz-chunked-arraybuffer responseTypes,但它不是标准化的。