我正在尝试从网上获取图片并使用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”似乎为空。
提前致谢!
BufferList已过时,因为它的功能现在在Node核心中。唯一棘手的部分是将请求设置为不使用任何编码:
var request = require('request').defaults({ encoding: null }); request.get('http://tinypng.org/images/example-shrunk-8cadd4c7.png', function (error, response, body) { if (!error && response.statusCode == 200) { data = "data:" + response.headers["content-type"] + ";base64," + Buffer.from(body).toString('base64'); console.log(data); } });