10

我正在尝试使用 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 像素的 png 文件(即它很大),这可能是一个因素吗?

另外,我也试过writeFile了,没有运气。

是的,fsrequire('fs')

谢谢

4

2 回答 2

11

你的 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();
});
于 2012-11-12T05:53:34.573 回答
5

更好的:

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) => {...});
于 2017-01-30T12:49:27.177 回答