首页 > 解决方案 > 将作为字符串发送的二进制数据转换为数组缓冲区

问题描述

我有一个节点快递服务器,它发送像 res.sendFile(__dirname + '/image.png') 这样的图像。因此,它使用 Content-Type: image/png 发送响应。

我使用 xhr 来接收这张图片。我没有将 responseType 属性设置为 blob(这很重要)!!

在这种情况下,xhr.response 如下所示:

�e+-M2����h��4�d&���|<��w�3�}M�9�|J.��|����$P�L~f������ z�I$�٭â :,�pI��b3[ /,=������쐇̟n��=r���w�f��OM�lw(�k��� �0�� �Æ�ƈ��OD�� 归入 E�</p>

如何将其转换为数组缓冲区?

标签: javascripttype-conversionarraybuffer

解决方案


我相信当image/png数据转换为 UTF-8 时会出现问题,因此无法直接进一步处理,即使是 base64。如果使用 XHR,想法是指定一个预期的响应类型如下,这样它就不会被转换成不需要的格式:

let xhr = new XMLHttpRequest();
xhr.responseType = "arraybuffer";

有关更多详细信息,请参考: Alex K 的回答


推荐阅读