来自 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 中返回。
我一直在尝试使用 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 中返回。