cfs在客户端显示上传的文件

时间:2015-02-14 15:09:07

标签: meteor

我的代码: 服务器/ app.js

var imageLargeStore = new FS.Store.S3("imagesLarge", {
  accessKeyId: "xxxx", 
  secretAccessKey: "xxx", 
  bucket: "profile-thumbs", 
  transformWrite: function(fileObj, readStream, writeStream) {
    gm(readStream, fileObj.name()).resize('250', '250').stream().pipe(writeStream)
  }
});
var imageSmallStore = new FS.Store.S3("imagesSmall", {
  accessKeyId: "xxxx", 
  secretAccessKey: "xxx",
  bucket: "profile-thumbs",
  transformWrite: function(fileObj, readStream, writeStream) {
    gm(readStream, fileObj.name()).resize('80', '80').stream().pipe(writeStream)
  }
});


thumbs = new FS.Collection("images", {
  stores: [imageLargeStore,imageSmallStore]
});
Meteor.publish("images", function() {
  return thumbs.find();
});
thumbs.allow({
  insert: function (userId, doc) {
    return true;
  },
  update: function (userId, doc, fields, modifier) {
    return true;
  },
  remove: function (userId, doc) {
    return true;
  },
  download:function(){
    return true;
  }
});

的客户机/ app.js

var imageLargeStore = new FS.Store.S3("imagesLarge");
var imageSmallStore = new FS.Store.S3("imagesSmall");
thumbs = new FS.Collection("images", {
  stores: [imageLargeStore,imageSmallStore],
  filter: {
    allow: {
      contentTypes: ['image/*']
    }
  }
})

上传工作正常,我可以在aws中看到图片

thumbs.insert(res,function(err,fileobj){
      console.log(fileobj);
    })

我发布并订阅了客户端中的所有馆藏

我试图显示图片,但他们没有显示

{{#each images}}
    <div>
       <a href="{{this.url}}" target="_blank"><img src="{{this.url store='imageSmallStore' uploading='/amazon.png' storing='/angjs.jpg'}}" alt="" class="thumbnail" /></a>
                </div>

 {{/each}}

images:function(){
  return thumbs.find({});
}

但是图像没有显示,而是显示图像(angjs.jpg)。

当我检查元素时,我可以看到像

这样的网址

但是图片没有显示,我的代码有什么问题?

enter image description here

当我尝试在aws控制台中打开Image时出现此错误

1 个答案:

答案 0 :(得分:0)

我认为发生的事情是您为集合定义了允许规则,但仅限于服务器上。客户端还需要访问集合的download属性才能访问文件的数据(而不是实际图像)

官方文档解释此https://github.com/CollectionFS/Meteor-CollectionFS#security