Node.js base64 кодирует загруженное изображение для использования в URI данных

Используя Node v0.2.0, я пытаюсь получить изображение с сервера, преобразовать его в строку base64 и затем вставить его на страницу в тег image. У меня есть следующий код:

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

Примечание: Этот код требует "express" и "request". И, конечно же, node. Если у вас установлен npm, все должно быть просто: "npm install express" или "npm install request".

К сожалению, это не работает так, как ожидалось. Если я выполняю преобразование с логотипом Google, то в начале строки я получаю следующее:

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

Однако если я использую онлайн Base64 encoder с тем же изображением, то все работает отлично. Строка начинается так:

iVBORw0KGgoAAAANSUhEUgAAARMAAABfCAMAAAD8mtMpAAADAFBMVEUAcwsOcRojZitLflOWBR+aBiGQFiipCSS8DCm1Cya1FiyNKzexKTjDDSrLDS

Где я ошибаюсь, что это не работает правильно? Я пробовал так много различных реализаций js base64, и все они не работают одинаково. Единственное, о чем я могу думать, это то, что я пытаюсь преобразовать неправильную вещь в base64, но что я должен преобразовать, если это так?

15
задан Bryan Field 29 March 2011 в 16:57
поделиться