是否有可能通过Javascripts xhr根据偏移量和长度检索大型二进制文件的部分

Is it possible to retrieve parts of a large binary file via Javascripts xhr based on offset and length?

本文关键字:检索 大型 二进制文件 偏移量 有可能 Javascripts xhr 是否      更新时间:2023-09-26

我正在编写一个访问二进制数据的处理程序。目前我正在做的是:

...
d = new FileReader();
d.onload = function (e) {
    var response_buffer, data, byte_len, temp_float;
    response_buffer = e.target.result;
    data = new DataView(response_buffer);
    byte_len = data.byteLength;
    // create empty placeholder for binary data received
    tmp_data = new Float32Array(byte_len / Float32Array.BYTES_PER_ELEMENT);
    len = tmp_data.length;
    // Pre-parse
    for (i = 0; i < len; i += 1) {
      tmp_data[i] = data.getFloat32(i * Float32Array.BYTES_PER_ELEMENT, true);
    }
    ...

这工作良好,"预处理"我的数据(文件/http)到我的tmp_data数组。

然而,我需要能够处理大文件,以及(如1GB+)。我的想法是尝试只获取文件的一部分,因为从二进制结构中我可以确切地知道我需要获取哪些偏移量。

:
如果我知道偏移量和长度,而不是必须获取整个文件,是否有可能XHR从一个大文件的"范围"字节?

谢谢!

如果你的服务器尊重它,你可以设置Range:请求头,它确实这样做。

您还可以实现自己的轮询策略,以x字节为块请求数据并传递偏移量。类似于无止境滚动在网页上的工作原理