MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Converter imagem base64 em um arquivo no Node Js


Edit:Este código funcionou para mim. Talvez o erro aconteça mais 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);

Se você disse
console.log(req.body.profile_image) 

ao invés de
 console.log(typeof req.body.profile_image)

Ele converteria qualquer dado que estivesse em req.body.profile_image para uma string antes de imprimir. É possível que você tenha esquecido o 'typeof' ao comentar, mas se você não adicionou o 'typeof' não pode ter certeza de que ele contém uma string. Há mais de um construtor no Buffer e pode estar usando o errado.

Para o lolz tente:
Buffer.from(String.fromCharCode.apply(null, new Uint16Array(req.body.profile_image)), "base64")

O que é atribuído a req.body.profile_image?

O primeiro argumento para writeFileSync é uma string, portanto, não pode estar causando o erro de tipo. Você pode ser mais específico sobre o que está contido em req.body.profile_image?

Em uma observação lateral, embora eu ache que isso não esteja relacionado ao seu problema, instanciar um Buffer com a palavra-chave 'new' é obsoleto .Talvez usando Buffer.from(...) irá movê-lo na direção de uma solução.