Используя 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, но что я должен преобразовать, если это так?