CollectionFS获取图像文件

时间:2015-06-29 09:23:18

标签: meteor collectionfs

您正在使用CollectionFS上传和存储图片。

上传并存储文件成功。我可以从发布中检索文件对象。但我无法获取文件的URL。我需要img代码

的网址

以下是我宣布收藏的方式。

Images = new FS.Collection("images", {
    stores: [new FS.Store.GridFS("images")]
});

在浏览器控制台中,代码返回FS.File对象

NewsImages.find().fetch()[0]
FS.File {createdByTransform: true, _id: "3kqLZRdLD33dKir2M", original: Object, chunkSize: 2097152, chunkCount: 0…}

但是url返回null。

NewsImages.find().fetch()[0].url()
null

生成网址需要额外的工作吗?

更多详情

我正在使用以下允许规则。

NewsImages.allow({
    //more others
    download: function(){
        if(Meteor.userId()){
            return true;
        }else{
            return false;
        }
    }
});

我遇到了异常。

Meteor.userId can only be invoked in method calls. Use this.userId in publish functions.

我将Meteor.userId()替换为this.userId,但this.userId未定义。

1 个答案:

答案 0 :(得分:1)

使用回调保存图像,然后将图像ID放入另一个 采集。粗伪代码......

Images.insert(yourFsFile, function (error, fileObj) {
    if (error) {
      // cry!
    }

    _.extend(yourItem, {imageId: fileObj._id});

    Meteor.call('otherCollectioInsert', yourItem, function(error, result) {
      if (error) {
        // cry again!
      }
      // should have saved the image id so you can use the url
      // http://www.you.com/cfs/files/images/the_id_you_saved
    });
  });

我希望这会有所帮助