我想将 HTTP 响应的内容流式传输到变量。我的目标是通过获取图像request()
,并将其存储在 MongoDB 中 - 但图像总是损坏。
这是我的代码:
request('http://google.com/doodle.png', function (error, response, body) {
image = new Buffer(body, 'binary');
db.images.insert({ filename: 'google.png', imgData: image}, function (err) {
// handle errors etc.
});
})
在这种情况下使用缓冲区/流的最佳方法是什么?
请求模块为您缓冲响应。在回调中,body
is一个字符串(或Buffer http://nodejs.org/api/buffer.html).
如果您不提供回调,您只能从请求返回流;request()
returns a Stream http://nodejs.org/api/stream.html.
有关更多详细信息和示例,请参阅文档。 https://github.com/mikeal/request#super-simple-to-use
request 假定响应是文本,因此它尝试将响应正文转换为 sring(无论 MIME 类型如何)。这会损坏二进制数据。如果您想获取原始字节,请指定null
encoding
.
request({url:'http://google.com/doodle.png', encoding:null}, function (error, response, body) {
db.images.insert({ filename: 'google.png', imgData: body}, function (err) {
// handle errors etc.
});
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)