但是,如果您真的很重视存储,并且想要存储数百万个图像,那么您将需要利用 Mongo 的 GridFS 基础架构,并为自己创建一个存储层。为此,您将需要出色的 CollectionFS 子系统。
首先添加必要的包。
meteor add cfs:standard-packages meteor add cfs:filesystem
并将文件上传元素添加到您的对象模型。
<template name="yourTemplate"> <input class="your-upload-class" type="file"> </template>
然后在客户端添加一个事件控制器。
Template.yourTemplate.events({ 'change .your-upload-class': function(event, template) { FS.Utility.eachFile(event, function(file) { var yourFile = new FS.File(file); yourFile.creatorId= Meteor.userId(); // 添加自定义数据 YourFileCollection.insert(yourFile, function (err, fileObj) { if (!err) { // 做回调的东西 } }); }); } });
并在您的服务器上定义您的集合:
YourFileCollection = new FS.Collection("yourFileCollection", { stores: [new FS.Store.FileSystem("yourFileCollection", {path: "~/meteor_uploads"})] }); YourFileCollection.allow({ insert: function (userId, doc) { return !!userId; }, update: function (userId, doc) { returndoc.creatorId== userId }, download: function (userId, doc) { returndoc.creatorId== userId } });
感谢 Raz 提供了这个很好的例子。您需要查看完整的 CollectionFS 文档,以了解有关所有 CollectionFS 可以做什么的更多详细信息。