使用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);
注意:此代码需要“ 表达 ”和“ 请求 ”。当然是node。如果已安装npm,则它应该像“
npm install express”或“ npm install request”一样简单。
不幸的是,这不能按预期工作。如果我使用Google徽标进行转换,则在字符串的开头会得到以下内容:
77 + 9UE5HDQoaCgAAAA1JSERSAAABEwAAAF8IAwAAAO + / ve + / ve + /
vSkAAAMAUExURQBzCw5xGiNmK0t + U ++ / vQUf77 + 9BiHvv70WKO + / vQkk77 + 9D
但是,如果我使用具有相同图像的在线Base64编码器,则它可以完美工作。字符串开始如下:
iVBORw0KGgoAAAANSUhEUgAAARMAAABfCAMAAAD8mtMpAAADAFBMVEUAcwsOcRojZitLflOWBR +
aBiGQFiipCSS8DCm1Cya1FiyNKzexKTjDDSrLDS
我在哪里错,这不能正常工作?我尝试了许多不同的js
base64实现,但它们都不能以相同的方式工作。我唯一能想到的是我正在尝试将错误的内容转换为base64,但是如果是这种情况,我应该怎么转换?
问题是在JavaScript字符串中编码和存储二进制数据。http://nodejs.org/api.html的“缓冲区”下有一个很好的章节。
不幸的是,解决此问题的最简单方法是更改请求npm。我必须response.setEncoding('binary');
在下面var buffer;
的/path/to/lib/node/.npm/request/active/package/lib/main.js中的第66行添加。这将对此请求正常运行,但对其他请求则无效。您可能想要修改它,以便仅基于其他通过的选项进行设置。
然后var buf = new Buffer(body)
,我更改为var buf = new Buffer(body, 'binary');
。之后,一切正常。
如果您确实不想触摸请求npm,则另一种方法是在responseBodyStream参数中传入一个实现Writable
Stream的对象来请求。然后,该对象会将来自响应的流数据存储在其自己的缓冲区中。也许有一个已经在执行此操作的库…我不确定。
我现在将其保留在此处,但是如果您想让我澄清任何事情,请随时发表评论。
编辑
查看评论。
http://gist.github.com/583836的新解决方案
我有一个来自服务器的bas64编码图像,我想通过JavaScript强制下载。有可能吗?
这是我为从url下载图像而编写的代码,但使用java.io.FileNotFoundException重新引用响应代码400
问题内容: 虽然此答案适用于从Jar文件中加载图像,但似乎无法为SwingHTML中引用的图像找到正确的路径。 当资源未捆绑到jar中时,这将在Swing HTML中显示图像: 在jar内部,可以将图像成功引用(并显示)到: 但是,我尝试将技术用于Swing HTML无效。 有什么秘密? 问题答案: 如果没有实际尝试,我认为如果在HTML代码中包含资源URL,则HTML渲染器可以访问您的图像:
问题内容: 我想对64个PNG文件进行base-64编码,以将其包含在样式表的data:url中。我怎样才能做到这一点? 我在Mac上,因此Unix命令行上的某些功能会很好用。基于Python的解决方案也很出色。 问题答案: 这应该在Python中完成:
我正在努力理解的行为。我想用它来编码查询参数中的URL,但它似乎只转义字符,而不转义其他必要的字符,如。 查询参数中根本没有编码的URL示例: 输出: 这是不正确的,因为未编码的会导致被解释为而不是的查询参数。 但是,如果使用包含字符的输入:: 输出: 字符被转义。 自动转义字符,但不转义其他保留字符,这似乎不一致。 使用将URL编码为查询参数的正确过程是什么?
我正在开发一个使用C作为练习的小型交易机器人。他将首先收到基本信息,如我们的资本和日常股票价值(表示为迭代)。 这是我的专业课: 从最后两个属性可以看出,我使用指数移动平均原理和趋势跟踪算法。 我从报纸上读到过http://www.cis.umac.mo/~fstasp/paper/jetwi2011。pdf(主要在第3页)并希望实现他们与我们共享的伪代码;它是这样的: 到目前为止,我是这样做的: