每当我使用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;
}
});
}
图片无法渲染:
答案 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中代码的时间。上传第一张图片时,代码会正确执行,当第二张图片上传时,代码会执行两次,依此类推。