sql >> Base de Datos >  >> NoSQL >> MongoDB

Convierta la imagen base64 en un archivo en Node Js

Editar:este código funcionó para mí. Tal vez el error ocurra más tarde.

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 dijiste

console.log(req.body.profile_image) 

en lugar de

 console.log(typeof req.body.profile_image)

Convertiría cualquier dato que haya en req.body.profile_image en una cadena antes de imprimir. Es posible que simplemente haya olvidado el 'tipo de' al comentar, pero si no agregó el 'tipo de', no puede estar seguro de que contenga una cadena. Hay más de un constructor para Buffer y puede estar usando el incorrecto.

Para el intento de lolz:

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

¿Qué se asigna a req.body.profile_image?

El primer argumento de writeFileSync es una cadena, por lo que no puede estar causando el error de tipo. ¿Puede ser más específico en cuanto a lo que contiene req.body.profile_image?

En una nota al margen, aunque creo que esto no está relacionado con su problema, crear una instancia de un búfer con la palabra clave 'nueva' es obsoleto .Tal vez usando Buffer.from(...) lo llevará en la dirección de una solución.