0

好的,所以我在具有可变路径的特定 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, { 
    });
});

它似乎以正确的大小成功存储。但是当我尝试查看图像时,它似乎已损坏。

4

1 回答 1

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'
    });
于 2013-10-14T21:15:10.257 回答