好吧,所以我在带有变量路径的特定URL上有一个图像,我想下载它并将其存储在CollectionFS中。如何从响应中获取/创建图像缓冲区?
var request = Npm.require('request').defaults({encoding: null});
request.get(path, function(err, res, body)
{
return CollectionFS.storeBuffer(res.request.uri.path, body, {
});
});
它似乎成功存储,大小正确。但是,当我尝试查看图像时,它似乎已损坏。
答案 0 :(得分:0)
回答我自己的问题。我对上面的代码有两个问题。首先,当你试图在回调中触摸数据库时,meteor不喜欢它,所以我添加了一个未来等待回调完成。
其次,storeBuffer上的默认编码是utf-8 - 这是图像的问题。将其更改为ascii解决了我的问题。
var Future = Npm.require(“fibers / future”);
var pre = new Future();
var preOnComplete = pre.resolver();
var request = Npm.require('request').defaults({encoding: null});
request.get(path, function(err, res, body)
{
return preOnComplete(err, res, body);
});
Future.wait(pre);
return EventImages.storeBuffer(pre.value.request.href, pre.value.body, {
contentType: 'image/jpeg',
metadata: { eventId: eventId },
encoding: 'binary'
});