图像的节点writeFileSync编码选项

时间:2016-07-07 16:15:11

标签: node.js encoding electron writefile

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

返回的文件

这适用于文本文件,但图像,pdfs等最终会被破坏。从搜索我已经完成的事情来看,显然是因为fs.writeFileSync(file, data[, options])默认为UTF-8

我已尝试将编码设置为二进制',mime-type和扩展无效。感觉就像我忽略了一些非常明显的东西,有人能指出我正确的方向吗?

提前谢谢

更新

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

1 个答案:

答案 0 :(得分:1)

从图像数据创建缓冲区并将其编码设置为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);