javascript - 将作为字符串发送的二进制数据转换为数组缓冲区
问题描述
我有一个节点快递服务器,它发送像 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>
如何将其转换为数组缓冲区?
解决方案
我相信当image/png
数据转换为 UTF-8 时会出现问题,因此无法直接进一步处理,即使是 base64。如果使用 XHR,想法是指定一个预期的响应类型如下,这样它就不会被转换成不需要的格式:
let xhr = new XMLHttpRequest();
xhr.responseType = "arraybuffer";
有关更多详细信息,请参考: Alex K 的回答。
推荐阅读
- python-2.7 - TypeError: urlopen() 在 Xubuntu 14.04.5 上尝试 Selenium 时获得了关键字参数“body”的多个值
- google-apps-script - 从 Google 表格中确定活动的 Google 幻灯片文件
- node.js - NPM 'run start' 命令给出“npm ERR!code ELIFECYCLE”错误
- python - Ping 脚本 - 如果响应
- asp.net-mvc - 无法使用反射访问运行时缓存
- python - 如何求解非线性方程?
- animation - 如何在 Flutter 中创建这样的圆形动画?
- c++ - 如何在 C++ 中将 cin 输入更改为命令行参数输入
- r - R:带有滑块的函数的交互式图形
- c++ - 关于编译器输出的 xor'ing 浮点值和一般转换问题