我有一张图片通过电子邮件(通过云服务提供商 Mandrill)进入我的 Node.js 应用程序。图像以 base64 编码字符串的形式出现,在下面的示例中为 email.content。我目前正在将图像写入缓冲区,然后是这样的文件:
//create buffer and write to file
var dataBuffer = new Buffer(email.content, 'base64');
var writeStream = fs.createWriteStream(tmpFileName);
writeStream.once('open', function(fd) {
console.log('Our steam is open, lets write to it');
writeStream.write(dataBuffer);
writeStream.end();
}); //writeSteam.once('open')
writeStream.on('close', function() {
fileStats = fs.statSync(tmpFileName);
这工作得很好,一切都很好,但是我本质上是否将这部分代码的内存需求增加了一倍,因为我的图像在内存中(作为原始字符串),然后在写入之前创建相同字符串的缓冲区文件?我将要处理大量入站图像,因此我的内存需求加倍是一个问题。
我尝试了几种将 email.content 直接写入流的方法,但它总是产生一个无效的文件。我是一个现代编码的业余爱好者,所以欢迎你告诉我这种担忧是完全没有根据的,只要你告诉我为什么大理石头上会出现一些曙光。
谢谢!