来自 XMLHttpRequest 文本的 JS ArrayBuffer

JS ArrayBuffer from XMLHttpRequest text

我一直在尝试使用 XMLHttpRequest 来获取从 C 结构创建的二进制文件。

如果我在十六进制编辑器中打开文件,所有字符都按预期编码。

如果我使用 <input type='file' /> 将文件添加到静态 HTML 页面,然后使用 FileReader.readAsArrayBuffer(),我可以看到 ArrayBuffer 具有相同的预期值。

但是,当我尝试通过 XMLHttpRequest 发送它并将它的 responseText 放入 ArrayBuffer 时,有几个字符被替换为 Unicode [=38] =].

如果我在 <input type='file' /> 测试中使用 FileReader.readAsText(),我会得到与 XMLHttpRequest.responseText.

相同的字符丢失

我已经控制了文件服务器,我已经尝试在响应中添加一个 Content-Type header (application/octet-stream?),但它似乎没有有区别。

我在这里缺少什么来确保 XMLHttpRequest.responseText 具有正确的数据,以便使用与 FileReader 方式相同的值创建 ArrayBuffer

当然,经过几个小时的努力,我在 SO 上做了橡皮鸭之后,我找到了解决方案。

XMLHttpRequest has a response property - I shouldn't be using responseText. Also, I can set the responseType 属性 在我发送请求之前确保它在 ArrayBuffer 中返回。