Meteor FS.Collection图像在上传时无法呈现

时间:2018-01-29 17:33:00

标签: javascript mongodb image meteor

每当我使用FileSystem上传带有FS.Collection的图像时,图像都不会渲染,我会收到503错误。但是,如果我刷新页面,图像将呈现,我没有错误。所以我不得不使用ostrio:meteor-root将图像路径设置为公共文件夹,因此每当我上传图像时,页面都会刷新。我是从Mongo.Collection而不是从FS.Collection获取图片网址的。 当我上传图片时,我将网址存储在广告:

    "_id" : "knCMZPK8RrY5Y7GQo",
    "reference" : 102020026,
    "pics" : {
    "pic" : [ 
             {
              "url" : "http://localhost:3000/cfs/files/Images/6fHhBT3ky5iAJnQfw"
             }
           ]
    },

Images.js:

    var imageStore = new FS.Store.FileSystem("Images", {
      path: Meteor.absolutePath + '/public/uploads'
    })
    Images = new FS.Collection("Images", {
      stores: [imageStore],
      filter: {
          allow: {
              contentTypes: ['image/*']
      },
    }
});

  if (Meteor.isServer) {
    Images.allow({
      insert: function(userId, party) {
          return true;
      },
      update: function(userId, party) {
          return true;
      },
      download: function(userId, party) {
          return true;
      },
      remove: function(userId, party) {
          return true;
      }
    });
  }

图片无法渲染:

enter image description here

1 个答案:

答案 0 :(得分:0)

<强>解答:

我没有使用FS收集而是切换到ostrio:files 因为我只想将图像上传到我正在更新的文档(我有一个reactive-table包含我的收藏数据,每行都是可点击的并且包含一个文档,当我点击一行时我使用iron:router导航到AutoForm更新单个文档的页面)我在客户端创建Meteor.call以将文档_id发送到服务器。
Meteor.call('docId', this._id)

图像似乎没有渲染,因为它在完成上传之前创建了缩略图。 所以为了解决这个问题,我在afterUpload上发起了docId Method回拨服务器端:

FSCollection.off('afterUpload')
FSCollection.on('afterUpload', function(fileRef){
  Update Mongo.Collection (...)
}

如果我之前没有使用.off,它会不断增加执行callbak中代码的时间。上传第一张图片时,代码会正确执行,当第二张图片上传时,代码会执行两次,依此类推。