MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Konvertieren Sie das base64-Image in eine Datei in Node Js

Bearbeiten:Dieser Code hat bei mir funktioniert. Eventuell tritt der Fehler später auf.

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

Wenn Sie

gesagt haben
console.log(req.body.profile_image) 

statt

 console.log(typeof req.body.profile_image)

Es würde alle Daten in req.body.profile_image vor dem Drucken in eine Zeichenfolge umwandeln. Es ist möglich, dass Sie beim Kommentieren das 'typeof' einfach vergessen haben, aber wenn Sie das 'typeof' nicht hinzugefügt haben, können Sie nicht sicher sein, dass es eine Zeichenfolge enthält. Es gibt mehr als einen Konstruktor für Buffer, und möglicherweise wird der falsche verwendet.

Versuchen Sie für den Lolz:

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

Was wird req.body.profile_image zugewiesen?

Das erste Argument für writeFileSync ist eine Zeichenfolge, daher kann es den Typfehler nicht verursachen. Können Sie genauer sagen, was in req.body.profile_image enthalten ist?

Nebenbei bemerkt, obwohl ich denke, dass dies nichts mit Ihrem Problem zu tun hat, ist das Instanziieren eines Puffers mit dem Schlüsselwort „new“ veraltet .Vielleicht mit Buffer.from(...) wird Sie in Richtung einer Lösung bewegen.