Node.js アプリケーションにメールで (クラウド サービス プロバイダーの Mandrill 経由で) 画像が送られてきます。画像は 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);
これは正常に動作し、すべて問題ありませんが、メモリ内にイメージを (元の文字列として) 保持しているため、コードのこのセクションのメモリ要件を本質的に 2 倍にしてから、同じ文字列のバッファを作成してから、ファイル?大量のインバウンド画像を処理するので、メモリ要件が 2 倍になることが懸念されます。
email.content をストリームに直接書き込むいくつかの方法を試しましたが、常に無効なファイルが生成されました。私は最新のコーディングのアマチュアなので、理由を教えてくれる限り、この懸念はまったく根拠がないことを教えてください。
ありがとう!