【发布时间】:2010-09-14 13:40:07
【问题描述】:
使用 Node v0.2.0 我正在尝试从服务器获取图像,将其转换为 base64 字符串,然后将其嵌入到图像标签中的页面上。我有以下代码:
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 logo 进行转换,那么我会在字符串的开头得到以下内容:
77+9UE5HDQoaCgAAAA1JSERSAAABEwAAAF8IAwAAAO+/ve+/ve+/vSkAAAMAUExURQBzCw5xGiNmK0t+U++/vQUf77+9BiHvv70WKO+/vQkk77+9D
但是,如果我使用具有相同图像的在线Base64 encoder,那么它可以完美运行。字符串开头是这样的:
iVBORw0KGgoAAAANSUhEUgAAARMAAABfCAMAAAD8mtMpAAADAFBMVEUAcwsOcRojZitLflOWBR+aBiGQFiipCSS8DCm1Cya1FiyNKzexKTjDDSrLDS
我哪里出错了,这不能正常工作?我尝试了很多不同的 js base64 实现,但它们的工作方式都不一样。我唯一能想到的就是我试图将错误的东西转换成base64,但是如果是这种情况我应该转换什么?
【问题讨论】:
标签: javascript image node.js base64