解码utf8字符串(图像)以在node.js中缓冲/图像

时间:2019-03-07 12:05:40

标签: javascript node.js string stream buffer

我正在接收如下所示的流中的图像,该图像在接收之前已被{imageBuffer.toString('utf8'))转换为utf8字符串,但是当我尝试使用以下数据创建缓冲区时,该缓冲区似乎是不同的,而不是能够重新创建图像。

msg =����ExifII*��DuckyF��,Photoshop 3.08BIM%��Adobed��↵→→→→↵↵↵g��g����→!! 1AQa“ q �2��B#��R3ђ��$T�bCSD��%EU�r�cs��!1QA����''a2q�B#�??65�]����jF( mR。$ Pm。*a.F.H7҄.7D。(。

console.log(typeOf msg)=>字符串

到目前为止,我已经尝试过:

let buffer = Buffer.from(msg, 'utf8');
let writable = require('fs').createWriteStream( '/home/test.jpg);
writable.write(buffer);
writable.end();

问题是:无法复制相同的图像。输出缓冲区的大小不同于图像的输入缓冲区。

2 个答案:

答案 0 :(得分:0)

使用

let buffer = Buffer.from(new Uint8Array(msg));
...

答案 1 :(得分:0)

请勿将二进制文件作为utf-8字符串发送。尝试base64:

imageBuffer.toString('base64')

和:

let buffer = Buffer.from(msg, 'base64');