jam*_*jam 20 stream request node.js
我想转换传入的http响应,它是一个流并将数据存储在一个变量中.我对节点流并不多,我正在努力做到这一点.
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.
});
})
Run Code Online (Sandbox Code Playgroud)
UPDATE
这是我的完整代码.我的目标是通过请求获取图像并将其存储在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.
});
})
Run Code Online (Sandbox Code Playgroud)
既然你已经澄清了请求缓冲区的响应,那就是我如何正确保存图像而不会损坏.
jos*_*736 40
请求模块为您缓冲响应.在回调中,body 是一个字符串(或Buffer).
如果您不提供回调,则只能从请求中获取流; request() 返回一个 Stream.
请求假定响应是文本,因此它尝试将响应主体转换为sring(无论MIME类型如何).这将破坏二进制数据.如果要获取原始字节,请指定a 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.
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25161 次 |
| 最近记录: |