2012-11-12 11 views
5

Sto tentando di utilizzare nodeJS per salvare un'immagine elaborata memorizzata in una stringa base64.NodeJS writeStream file vuoto

var buff = new Buffer(base64data,'base64'); 
console.log(base64data); 

var stream = fs.createWriteStream('/path/to/thefile.png'); 
stream.write(buff) 
stream.end() 

Tuttavia, il file risultante è vuoto.

Quando prendo l'output di console.log(base64data); e lo decodifico localmente, produce un binario png valido, quindi perché il file è vuoto?

Il file è un file png 3600x4800 px (vale a dire è enorme), potrebbe essere un fattore?

Inoltre, ho provato anche writeFile, non ho fortuna.

E sì, è fsrequire('fs')

Grazie

+0

il codice è valido, e posso farlo funzionare a livello locale, prova ad accedere 'buff' come questo è ciò che si sta tentando di scrivere (non' base64data') al file per vedere se c'è un problema a convertirlo. Potresti anche provare a verificare le tue autorizzazioni. – Sdedelbrock

risposta

8

tua stream.end() troppo presto come nulla è scritto. è ricordare la funzione asincrona.

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

Meglio:

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

Puoi fornire alcuni dettagli sulle linee che hai aggiunto? – jhhoff02

+0

Per favore, leggi la documentazione di Node.js. –