使用 collection fs 进行简单图片上传

Simple image uploading with collection fs

我已经安装了 collection fs 包来处理我的图片上传,但到目前为止,我还没有成功上传一张图片。

我的活动中有这个代码

'change .ip': function(event, template) {
       FS.Utility.eachFile(event, function(file) {
           var yourFile = new FS.File(file);
        SchoolImages.insert(yourFile, function (err, fileObj) {
          if (err){
             // handle error
             alert('error');

          } else {
             // handle success depending what you need to d
             alert('success');
          }
        });
     });
  }

这是我的html

<input type="file" class="ip form-control" name="sn_edit" value="">

这是我的 collection 代码

SchoolImages = new FS.Collection("SchoolImages", {
    stores: [new FS.Store.FileSystem("SchoolImages", {path: "~/meteor_uploads"})]
});


if (Meteor.isServer) {
  SchoolImages.allow({
    insert: function (userId, doc) {
      return false;
    },

    update: function (userId, doc, fieldNames, modifier) {
      return false;
    },

    remove: function (userId, doc) {
      return false;
    }
  });

  SchoolImages.deny({
    insert: function (userId, doc) {
      return true;
    },

    update: function (userId, doc, fieldNames, modifier) {
      return true;
    },

    remove: function (userId, doc) {
      return true;
    }
  });
}

当我尝试上传图片时,没有上传任何图片,也没有创建 collection。我的代码出错 alert('error') - 请参阅上面的代码。

我应该如何修改我的代码才能成功上传图片?

您不必在 Meteor.isServer 中允许内部数据库操作。可以直接写collections代码如下


SchoolImages = new FS.Collection("SchoolImages", {
    stores: [new FS.Store.FileSystem("SchoolImages", {path: "~/meteor_uploads"})]
});



SchoolImages.allow({
    insert: function (userId, doc) {
      return true;
    },

    update: function (userId, doc, fieldNames, modifier) {
      return true;
    },

    remove: function (userId, doc) {
      return true;
    }
  });

一般来说,当您在不同的文件夹中构建项目时,我建议将这段代码写在 lib 文件夹中。