MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Converti l'immagine base64 in un file in Node Js

Modifica:questo codice ha funzionato per me. Forse l'errore si verifica più tardi.

var fs = require("fs");
var image = "+MZScHeJQ9Cz5dfxnEmIMHWMZyZYnYx8Rrhj0HbtfGUanv5w3UHUyADbiGsKJxeM1yV4uGwBS7cYlAec1w0AX6xg2A1O854UF8OS6PAP1MtzkeFnrNlD41U8XFeGrp1fn3jRMUs8sqS61umSS2rR2NDhppjZ4OvnOWBAq6X+sQNkhKkfZOdYsZOpz8fWIQb6wQ/GchVCgfZko4PMDg1DSumausG6o+2E6wKLLjKReUaHEQXKJV8h85XEKN4p/WEBvTHmmJ/IN178YJVgrGmfOScAuBPp+sggGA7/wC1kgbDiacbGABOcCLHVRpMuBQh5Xn4xqARF03pwkJT23LhxGLiSGp8mCVWDrzPf3iwp4C3nDSg2VUfNwgDvm6vrIiFJvp8ZHIdjoFx8BX0OH0+8TVii3GAKKc2kjz7dYqUCdsuMOm2hrr+h//Z";
var bitmap = new Buffer(image, 'base64');
fs.writeFileSync("images/example.jpg", bitmap);

Se hai detto

console.log(req.body.profile_image) 

piuttosto che

 console.log(typeof req.body.profile_image)

Trasmette tutti i dati presenti in req.body.profile_image in una stringa prima della stampa. È possibile che tu abbia dimenticato "typeof" durante il commento, ma se non hai aggiunto "typeof" non puoi essere certo che contenga una stringa. C'è più di un costruttore in Buffer e potrebbe usare quello sbagliato.

Per il lolz prova:

Buffer.from(String.fromCharCode.apply(null, new Uint16Array(req.body.profile_image)), "base64")

Cosa viene assegnato a req.body.profile_image?

Il primo argomento per writeFileSync è una stringa, quindi non può causare l'errore di tipo. Puoi essere più specifico su ciò che è contenuto in req.body.profile_image?

In una nota a margine, anche se penso che questo non sia correlato al tuo problema, creare un'istanza di un buffer con la parola chiave "nuovo" è obsoleto .Forse usando Buffer.from(...) ti sposterà nella direzione di una soluzione.