我有一張圖像通過電子郵件(通過雲服務提供者Mandrill)進入我的Node.js應用程序。該圖像以base64編碼字符串形式出現,在下面的示例中爲email.content。我目前正在寫的圖像緩衝區,然後一個文件是這樣的:通過createWriteStream將基本64字符串保存到文件
//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直接寫入流的方法,但它總是產生一個無效的文件。我是一名擁有現代編碼的業餘愛好者,所以歡迎您告訴我,只要您告訴我爲什麼這樣的光線會在大理石頭上亮起,這種擔憂就完全沒有根據。
謝謝!
我試過這個,我沒有先複製email.content到一個緩衝區,我得到一個損壞的文件。任何想法爲什麼發生這種情況我想避免中間緩衝步驟,但這似乎是成功獲取有效圖像的唯一方法。 – pat