Korzystanie z węzła v0.2.0 Próbuję pobrać obraz z serwera, przekonwertować go na ciąg base64, a następnie osadzić go na stronie w tagu obrazu. Mam następujący kod:Node.js base64 kodują pobrany obraz do użycia w URI danych
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);
Uwaga: Ten kod wymaga "express" i "request". I oczywiście, node. Jeśli masz zainstalowany npm, powinno być tak proste, jak "npm install express" lub "npm install request".
Niestety to nie działa zgodnie z oczekiwaniami. Jeśli zrobić konwersję z Google logo, a następnie pojawia się następujący na początku łańcucha:
77 + 9UE5HDQoaCgAAAA1JSERSAAABEwAAAF8IAwAAAO +/ve +/ve +/vSkAAAMAUExURQBzCw5xGiNmK0t + U ++/vQUf77 + 9BiHvv70WKO +/vQkk77 + 9D
Jednak jeśli używam online Base64 encoder z tym samym obrazem, to działa idealnie. Łańcuch zaczyna się tak:
iVBORw0KGgoAAAANSUhEUgAAARMAAABfCAMAAAD8mtMpAAADAFBMVEUAcwsOcRojZitLflOWBR + aBiGQFiipCSS8DCm1Cya1FiyNKzexKTjDDSrLDS
Gdzie ja mam źle, że to nie działa poprawnie? Próbowałem wielu różnych implementacji js base64 i wszystkie nie działają w ten sam sposób. Jedyne co mogę myśleć to to, że próbuję przekonwertować niewłaściwą rzecz na base64, ale co powinienem przekonwertować, jeśli tak jest?
Dzięki, to działa, ale nie podoba mi się pomysł edycji pakietu żądania, aby działał. Jak dokładnie zaimplementujesz obiekt typu Zapisywalny strumień? Nie mogę wymyślić, jak go stworzyć. Każda pomoc będzie naprawdę doceniona! – betamax
Znaleziono ładną wersję do zapisu na stronie http://github.com/substack/node-bufferlist. Oto zaktualizowana wersja kodu, która nie musi modyfikować biblioteki żądań: http://gist.github.com/583836. – bxjx
, które działają dla Ciebie? – bxjx