我的代码: 服务器/ 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)。
当我检查元素时,我可以看到像
这样的网址但是图片没有显示,我的代码有什么问题?
当我尝试在aws控制台中打开Image时出现此错误
答案 0 :(得分:0)
我认为发生的事情是您为集合定义了允许规则,但仅限于服务器上。客户端还需要访问集合的download
属性才能访问文件的数据(而不是实际图像)
官方文档解释此https://github.com/CollectionFS/Meteor-CollectionFS#security