Usando Node v0.2.0 Estoy tratando de obtener una imagen de un servidor, convertirla en una cadena base64 y luego incrustarla en la página en una etiqueta de imagen. Tengo el siguiente código:Node.js base64 codifica una imagen descargada para su uso en URI de datos
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);
Nota: Este código requiere "express" y "request". Y por supuesto, node. Si tiene npm instalado, debe ser tan simple como "npm install express" o "npm install request".
Desafortunadamente, esto no funciona como se esperaba. Si hago la conversión con la Google logo, entonces me sale el siguiente al inicio de la cadena:
77 + 9UE5HDQoaCgAAAA1JSERSAAABEwAAAF8IAwAAAO +/VE +/VE +/vSkAAAMAUExURQBzCw5xGiNmK0t + U ++/vQUf77 + 9BiHvv70WKO +/vQkk77 + 9D
Sin embargo, si uso un Base64 encoder en línea con la misma imagen, entonces funciona perfectamente. La cadena comienza así:
iVBORw0KGgoAAAANSUhEUgAAARMAAABfCAMAAAD8mtMpAAADAFBMVEUAcwsOcRojZitLflOWBR + aBiGQFiipCSS8DCm1Cya1FiyNKzexKTjDDSrLDS
¿Dónde voy equivocada de que esto no está funcionando correctamente? He intentado tantas implementaciones js base64 diferentes y todas no funcionan de la misma manera. Lo único que puedo pensar es que estoy tratando de convertir lo incorrecto en base64, pero ¿qué debo convertir si ese es el caso?
Gracias, esto funciona, pero realmente no me gusta la idea de editar el paquete de solicitud para que funcione. ¿Cómo implementaría exactamente un objeto de secuencia de escritura? No puedo entender cómo crear uno. ¡Cualquier ayuda sería realmente apreciada! – betamax
Encontré una buena implementación de secuencia modificable en http://github.com/substack/node-bufferlist. Aquí hay una versión actualizada del código que no necesita modificar la biblioteca de solicitudes: http://gist.github.com/583836. – bxjx
que funcionan para usted? – bxjx