我使用fs.writeFileSync(file, data[, options])
保存从http.get(options[, callback])
这适用于文本文件,但图像,pdfs等最终会被破坏。从搜索我已经完成的事情来看,显然是因为fs.writeFileSync(file, data[, options])
默认为UTF-8
我已尝试将编码设置为二进制',mime-type和扩展无效。感觉就像我忽略了一些非常明显的东西,有人能指出我正确的方向吗?
提前谢谢
更新
我通过电子来运行这个。我不认为它值得一提,因为电子只是运行节点,但我不是节点或电子专家,所以我不确定答案 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);