1

您好正在使用 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

生成 URL 是否需要额外的工作?

更多细节

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

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.userIdthis.userId未定义。

4

1 回答 1

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
    });
  });

我希望这有帮助

于 2015-06-29T10:32:24.833 回答