文件输入流星cfs

时间:2014-10-29 02:07:27

标签: node.js mongodb collections meteor

所以我在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吗?只是元数据

抱歉,不好的英语希望你能帮助我

1 个答案:

答案 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可以在没有大小的情况下创建,所以我的猜测是否定的,你不能只存储元数据而不将其附加到文件中。无论如何,当元数据应该描述相关图像时,在我看来只存储元数据有点违反直觉。你最好使用一个单独的集合。

希望有所帮助:)