【发布时间】:2013-06-15 13:14:48
【问题描述】:
我正在尝试从网络上获取图像并使用 base64 对其进行编码。
到目前为止,我所拥有的基本上是:
var request = require('request');
var BufferList = require('bufferlist').BufferList;
bl = new BufferList(),
request({uri:'http://tinypng.org/images/example-shrunk-8cadd4c7.png',responseBodyStream: bl}, function (error, response, body)
{
if (!error && response.statusCode == 200)
{
var type = response.headers["content-type"];
var prefix = "data:" + type + ";base64,";
var base64 = new Buffer(bl.toString(), 'binary').toString('base64');
var data = prefix + base64;
console.log(data);
}
});
这似乎非常接近解决方案,但我无法让它发挥作用。它识别数据类型并给出输出:
data:image/png;base64
但是缓冲区列表“bl”似乎是空的。
提前致谢!
【问题讨论】:
-
只是一个完全疯狂的猜测,但我认为 request() 可能正在使用一个标头,该标头指示可能被某些站点阻止的代理以最大程度地减少抓取。
-
@BrettZamir 你这么认为吗?用 200 响应阻止请求似乎非常讨厌......
-
请问:
require('request')是什么?在文档中找不到。我所知道的只是 http/https。 -
@Sebastian,是的,这只是一个疯狂的猜测......但这是我反复出现的问题之一,所以只是将其作为一次性使用......
-
@SebastianG,如果您在文档中找不到需要的内容,那么这意味着它来自...? :D
标签: node.js encoding express base64