我正在尝试使用nodeJS来保存存储在base64字符串中的已处理图像。
var buff = new Buffer(base64data,'base64');
console.log(base64data);
var stream = fs.createWriteStream('/path/to/thefile.png');
stream.write(buff)
stream.end()
但是,生成的文件为空。
当我获取console.log(base64data);
的输出并在本地解码时,它会生成一个有效的png二进制文件,那么为什么文件为空?
该文件是一个3600x4800 px png文件(即它很大),这可能是一个因素吗?
另外,我也试过writeFile
,没有运气。
是的,fs
是require('fs')
由于
答案 0 :(得分:9)
你的stream.end()太快写完了。这是异步功能记住。
var buff = new Buffer(base64data,'base64');
console.log(base64data);
var stream = fs.createWriteStream('/path/to/thefile.png');
stream.write(buff);
stream.on("end", function() {
stream.end();
});
答案 1 :(得分:1)
更好:
var buff = new Buffer(base64data,'base64');
console.log(base64data);
var stream = fs.createWriteStream('/path/to/thefile.png');
stream.write(buff);
stream.end();
stream.on('finish', () => {
//'All writes are now complete.'
});
stream.on('error', (error) => {...});