我正在使用流星和collectionfs进行项目。
我将文件上传到collectionfs并具有适当的文件处理程序。我可以使用{{cfsFileUrl“ defaultFilehandler”}}
Handlebar Helper可以显示保存图像的URL,但是我无法从该URL下载图像。
当我将其复制到浏览器中时:
localhost:3000/cfs/contacts/Nj3WzrBKhqd9Mc9NP_defaultHandler.png
流星将我路由到流星页面(好像我已经写过localhost:3000一样)
最终,我想实现两件事:
1号
使用html标签显示图像:
<img src=??? alt="your image" />
第二,我想确保允许用户看到该图像。
对于我来说,拥有“下载URL”不足以保证安全。
为了达到目的,我从collectionFS看了普通教程:
客户端js
ContactsFS = new CollectionFS('contacts', { autopublish: false });
Deps.autorun(function() {
Meteor.subscribe('myContactsFiles');
});
Template.queueControl.events({
'change .fileUploader': function (e) {
var files = e.target.files;
for (var i = 0, f; f = files[i]; i++) {
ContactsFS.storeFile(f);
}
}
});
服务器js
ContactsFS = new CollectionFS('contacts', { autopublish: false });
ContactsFS.allow({
insert: function(userId, file) {
console.log('user'+userId+"file"+JSON.stringify(file));
console.log("WILL SAVE:"+userId && file.owner === userId );
return userId && file.owner === userId;
},
update: function(userId, files, fields, modifier) {
return _.all(files, function (file) {
return (userId == file.owner);
}); //EO iterate through files
},
remove: function(userId, files) { return false; }
});
Meteor.publish('myContactsFiles', function() {
if (this.userId) {
return ContactsFS.find({ owner: this.userId }, { limit: 30 });
}
});
ContactsFS.fileHandlers({
default1: function(options) { // Options contains blob and fileRecord — same is expected in return if should be saved on filesytem, can be modified
return { blob: options.blob, fileRecord: options.fileRecord }; // if no blob then save result in fileHandle (added createdAt)
}});
答案1:
您可以使用collectionFS的更新版本0.3.3+公开地使这些文件可访问或查看。
<img src="{{cfsFileUrl 'default1'}}">
您在其中default1
定义的处理函数的名称在哪里ContactsFS.fileHandlers
答案2:
到目前为止,尚无安全的解决方案内置在collectionFS中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句