我想转换传入的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)
既然你已经澄清了请求缓冲区的响应,那就是我如何正确保存图像而不会损坏.
我有一个很长的字节数组,数字从 0 到 255,并且我知道它是图像,那么如何像文件一样保存它呢?我尝试了很多事情,但都没有成功。
图像已创建,但由于已损坏而无法打开。
文件.js
function saveImage(filename, data){
//Data = [1,6,2,23,255,etc]
var wstream = fs.createWriteStream(ARTWORK_PATH+filename);
for (var i = 0; i < data.length; i++) {
wstream.write(data[i].toString('base64'));
}
wstream.end();
}
Run Code Online (Sandbox Code Playgroud)