web-dev-qa-db-fra.com

Rendu d'un PNG Base64 avec Express

Mon serveur Node.js a quelque chose qui ressemble à ceci:

app.get("/api/id/:w", function(req, res) {
    var data = getIcon(req.params.w);
});

Ici, data est une chaîne contenant une représentation Base64 d'une image PNG. Est-il possible de l'envoyer à un client accédant à la route codée et affichée sous forme d'image (par exemple, pour que l'URL puisse être utilisée dans une balise img)?

15
Hydrothermal

Oui, vous pouvez encoder votre chaîne base64 et la renvoyer au client sous forme d'image:

server.get("/api/id/:w", function(req, res) {
    var data = getIcon(req.params.w);
    var img = new Buffer(data, 'base64');

   res.writeHead(200, {
     'Content-Type': 'image/png',
     'Content-Length': img.length
   });
   res.end(img); 
});
39
Ben Diamant

J'ai dû faire quelques manipulations pour obtenir le mien dans le bon format, mais cela a très bien fonctionné:

  var base64Data = data.replace(/^data:image\/png;base64,/, '');
2
JayCrossler