所以我在Docs上看到了这段代码
Template.myForm.events({
'change .myFileInput': function(event, template) {
FS.Utility.eachFile(event, function(file) {
Images.insert(file, function (err, fileObj) {
//Inserted new doc with ID fileObj._id, and kicked off the data upload using HTTP
});
});
}
});
但是当我点击" myFileInptu"时,我不希望文件上传。 ,我想存储该值(来自输入),并最近插入一个按钮,所以有一些方法可以做到这一点?
还有一种方法可以在没有文件的情况下上传FSCollection吗?只是元数据
抱歉,不好的英语希望你能帮助我
答案 0 :(得分:0)
实现您想要的内容需要对事件进行微不足道的更改,即从change .myFileInput
切换到submit .myForm
。在提交事件中,您可以通过选择文件输入来获取文件的值,然后手动将其存储为FS文件。类似的东西:
'submit .myForm': function (event, template) {
event.preventDefault();
var file = template.find('#input').files[0];
file = new FS.File(file);
// set metadata
file.metadata = { 'caption': 'wow' };
Images.insert(file, function (error, file) {
if (!error)
// do something with file._id
});
}
如果您在CollectionFS中使用autoform,则可以将该代码放在onSubmit挂钩中。您在问题中提供的循环也有效。
关于你的第二个问题,我不认为FS.Files可以在没有大小的情况下创建,所以我的猜测是否定的,你不能只存储元数据而不将其附加到文件中。无论如何,当元数据应该描述相关图像时,在我看来只存储元数据有点违反直觉。你最好使用一个单独的集合。
希望有所帮助:)