MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Convertir une image base64 en un fichier dans Node Js

Edit :ce code a fonctionné pour moi. Peut-être que l'erreur se produit plus tard.

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);

Si vous avez dit

console.log(req.body.profile_image) 

plutôt que

 console.log(typeof req.body.profile_image)

Il convertirait toutes les données contenues dans req.body.profile_image en une chaîne avant l'impression. Il est possible que vous ayez simplement oublié le 'typeof' lors du commentaire, mais si vous n'avez pas ajouté le 'typeof', vous ne pouvez pas être certain qu'il contient une chaîne. Il y a plus d'un constructeur à Buffer et il utilise peut-être le mauvais.

Pour le lolz essayez :

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

Qu'est-ce qui est attribué à req.body.profile_image ?

Le premier argument de writeFileSync est une chaîne, il ne peut donc pas être à l'origine de l'erreur de type. Pouvez-vous être plus précis sur le contenu de req.body.profile_image ?

En passant, bien que je pense que cela n'est pas lié à votre problème, l'instanciation d'un tampon avec le mot clé 'new' est obsolète .Peut-être utiliser Buffer.from(...) vous orientera vers une solution.