好的,我在一个特定的URL上有一个带有变量path的图像,我想要下载它并将它存储在CollectionFS中。如何从响应中获取/创建图像缓冲区?
var request = Npm.require('request').defaults({encoding: null});
request.get(path, function(err, res, body)
{
return CollectionFS.storeBuffer(res.request.uri.path, body, {
});
});它看起来存储成功,大小正确。但当我尝试查看图像时,它似乎已损坏。
发布于 2013-10-15 05:15:10
回答我自己的问题。我对上面的代码有两个问题。首先,meteor不喜欢你尝试在回调中访问数据库,所以我添加了一个等到回调完成的future。
其次,storeBuffer上的默认编码是utf-8,这对图像来说是个问题。改成ascii解决了我的问题。
var Future =Npm.require(“光纤/未来”);
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'
});https://stackoverflow.com/questions/19366155
复制相似问题