2012-11-12 5 views
5

node64を使用して、base64文字列に格納された処理済みイメージを保存しようとしています。NodeJS writeStream空のファイル

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

コードが有効である、と私は、それがローカルに作業し得るものとbuff'が何を書き込もうとしている(いない 'base64data')にある'ログインしてみてくださいファイルを変換して問題があるかどうかを確認します。また、あなたの権限をチェックしてみてください。 – Sdedelbrock

答えて

8

あなた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

ベター:

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) => {...}); 
+1

追加した行についていくつかの情報を提供できますか? – jhhoff02

+0

Node.jsのドキュメントをお読みください。 –

関連する問題