【问题标题】:File input meteor cfs文件输入流星cfs
【发布时间】:2014-12-24 15:29:46
【问题描述】:

所以我在文档上看到了这段代码

 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 吗?只是元数据

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

【问题讨论】:

    标签: node.js mongodb collections meteor


    【解决方案1】:

    实现你想要的需要对事件进行微不足道的更改,即从 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 不能在没有大小的情况下创建,所以我的猜测是否定的,您不能只存储元数据而不将其附加到文件中。无论如何,当元数据应该描述关联的图像时,只存储元数据在我看来有点违反直觉。您最好为此使用单独的集合。

    希望有所帮助:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-16
      • 1970-01-01
      • 1970-01-01
      • 2014-08-05
      • 2015-03-03
      相关资源
      最近更新 更多