sql >> Databáze >  >> NoSQL >> MongoDB

Převeďte obrázek base64 na soubor v Node Js

Edit:Tento kód mi fungoval. Možná k chybě dojde později.

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

Pokud jste řekli

console.log(req.body.profile_image) 

spíše než

 console.log(typeof req.body.profile_image)

Před tiskem by přenášela jakákoli data v req.body.profile_image do řetězce. Je možné, že jste při komentování zapomněli 'typeof', ale pokud jste 'typeof' nepřidali, nemůžete si být jisti, že obsahuje řetězec. Buffer má více než jeden konstruktor a může používat ten nesprávný.

Pro lolz pokus:

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

Co je přiřazeno k req.body.profile_image?

První argument pro writeFileSync je řetězec, takže nemůže způsobit chybu typu. Můžete být konkrétnější, co je obsaženo v req.body.profile_image?

Na okraj, i když si myslím, že to s vaším problémem nesouvisí, vytvoření instance Buffer s klíčovým slovem 'new' je zastaralé .Možná pomocí Buffer.from(...) vás posune směrem k řešení.




  1. Indexování Mongoose v produkčním kódu

  2. Efektivní formát dokumentu pro ukládání hlasů v Mongo DB?

  3. Existuje způsob, jak použít objekty dotazů MongoDB k filtrování běžných polí JavaScriptu?

  4. Jak v pyramidě vrátím nezpracovaný HTML z pohledu?