Node.js base64 encode une image téléchargée pour l'utilisation dans data URI

L'aide d'un Noeud v0.2.0 je suis en train de chercher une image à partir d'un serveur, de le convertir en une chaîne base64 et ensuite l'intégrer sur la page dans une balise image. J'ai le code suivant:

var express = require('express'),
request = require('request'),
sys = require('sys');

var app = express.createServer(
    express.logger(),
    express.bodyDecoder()
);

app.get('/', function(req, res){

    if(req.param("url")) {
        var url = unescape(req.param("url"));
        request({uri:url}, function (error, response, body) {
          if (!error && response.statusCode == 200) {

                var data_uri_prefix = "data:" + response.headers["content-type"] + ";base64,";
                var buf = new Buffer(body);
                var image = buf.toString('base64');

                image = data_uri_prefix + image;

                res.send('<img src="'+image+'"/>');

          }
        });
    }
});

app.listen(3000);

Remarque: Ce code nécessite "express" et "demande". Et bien sûr, nœud. Si vous avez des mnp installé, il devrait être aussi simple que "npm install express" ou "npm install demande".

Malheureusement, cela ne fonctionne pas comme prévu. Si je fais la conversion avec la Logo Google, puis-je obtenir ce qui suit au début de la chaîne:

77+9UE5HDQoaCgAAAA1JSERSAAABEwAAAF8iawaaao+/ve+/ve+/vSkAAAMAUExURQBzCw5xGiNmK0t+U++/vQUf77+9BiHvv70WKO+/vQkk77+9D

Cependant si j'utilise une ligne Encoder en Base64 avec la même image, alors qu'il fonctionne parfaitement. La chaîne commence comme ceci:

iVBORw0KGgoAAAANSUhEUgAAARMAAABfcamaaad8mtmpaaadafbmveuacwsocrojzitlflowbr+aBiGQFiipCSS8DCm1Cya1FiyNKzexKTjddsrlds

Où vais-je tort que ce qui ne fonctionne pas correctement? J'ai essayé beaucoup de différentes js base64 implémentations et ils ont tous ne fonctionnent pas de la même manière. La seule chose que je peux penser, c'est que je suis en train de convertir la mauvaise chose en base64, mais que dois-je convertir si c'est le cas?

InformationsquelleAutor betamax | 2010-09-14