0

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

...
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?

谢谢!

4

2 回答 2

1

如果您的服务器尊重它,您可以设置Range:请求标头,这正是这样做的。

于 2014-05-26T18:49:25.273 回答
1

您还可以实现自己的轮询策略,在其中请求以 x 字节为单位的数据并传递偏移量。类似于无限滚动在网页上的工作方式。

于 2014-05-26T18:50:45.910 回答