我一直试图使用XMLHttpRequest来从C结构创建一个二进制文件。

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

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

但是,当我尝试通过XMLHttpRequest发送它并将其responseText放入ArrayBuffer时,有几个字符被Unicode“替换字符”替换。

如果我在FileReader.readAsText()测试中使用<input type='file' />,则会得到与XMLHttpRequest.responseText相同的字符丢失。

我已经控制了文件服务器,并且尝试在响应中添加Content-Type标头(application/octet-stream?),但这似乎没有什么不同。

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

最佳答案

当然,经过数小时的研究,就在我坚持不懈地找到解决方案之后。

XMLHttpRequest具有response属性-我不应该使用responseText。另外,我可以在发送请求之前设置responseType属性,以确保它在ArrayBuffer中返回。

关于javascript - 来自XMLHttpRequest文本的JS ArrayBuffer,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54498866/

10-13 08:23