图像的节点 writeFileSync 编码选项

Node writeFileSync encoding options for images

我正在使用 fs.writeFileSync(file, data[, options]) 保存从 http.get(options[, callback])

返回的文件

这适用于文本文件,但图像、pdf 等最终会被损坏。从我所做的搜索来看,这显然是因为 fs.writeFileSync(file, data[, options]) 默认为 UTF-8

我试过将编码设置为 'binary'、mime 类型和扩展名都无济于事。感觉我忽略了一些非常明显的东西,有人能给我指出正确的方向吗?

提前致谢

更新

我是运行这个通过electron的。我认为不值得一提,因为电子只是 运行 节点,但我不是节点或电子专家所以我不确定

从图像数据创建一个缓冲区并将其编码设置为binary。然后将该数据传递到 stream.PassThrough 并将其通过管道传递到 stream.Writable.

var fs = require('fs');
var stream = require('stream');

var imgStream = new stream.PassThrough();
imgStream.end(Buffer.from(data, 'binary'));

var wStream = fs.createWriteStream('./<dest>.<ext>');

imgStream.once('end', () => {
    console.log('Image Written');
});

imgStream.once('error', (err) => {
    console.log(err);
});

imgStream.pipe(wStream);