【发布时间】:2016-01-05 16:32:50
【问题描述】:
我是流星和 mongodb 的初学者,我正在寻找一种在 mongodb 集合中一次存储许多图像的方法。如果有演示或可以帮助我的东西,请给我。谢谢!
【问题讨论】:
-
在这里你可以找到一些东西,meteor.com/tutorials/blaze/collections
-
谢谢!我知道如何在集合中插入数据,但问题是如何插入图片
我是流星和 mongodb 的初学者,我正在寻找一种在 mongodb 集合中一次存储许多图像的方法。如果有演示或可以帮助我的东西,请给我。谢谢!
【问题讨论】:
管理文件上传既复杂又困难,这取决于您要处理的文件类型和文件数量
如果图像或文件的数量和大小不是很大,可以尝试 mongoDB GridFS,有两个支持 GridFS 的著名包:
meteor add cfs:standard-packages cfs:gridfsCollectionFS 还支持服务器文件系统(永远不要将其用于用户上传文件)AWS-S3,甚至是保管箱。 CFS 真的很强大并且有很多有用的特性。不过,我在使用的过程中遇到了一些问题,也知道怎么解决,所以我就搬走了……(huge number of open bug tickets 听起来不太乐观)meteor add vsivsi:file-collection相比CFS轻量级,只支持GridFS。离开 CFS 后我切换到文件收集一段时间,它更容易启动和运行,而且 IMO 更可预测。但是! GridFS 的问题在于 MongoDB 的维护成本很高,请参阅 mongolab 和 compose.io(以前的 mongohq)定价。这很昂贵,因为维护 mongo 很困难,甚至调试也很困难,而且如果您的数据库崩溃,您的应用程序将无法运行!因此,让文件上传远离 mongoDB 可能是一个更好的主意...
简短的回答是:S3(或谷歌云/Azure 等价物),您可以看到定价here。 S3 稳定、安全、便宜且可完美扩展(Dropbox 仍使用 S3)。
但问题是……S3 更难学。我目前使用slingshot 来管理客户端文件上传(所以大文件上传不会减慢我的网络服务器的速度),并且到目前为止工作正常(如果这个包不适合你,你可以随时切换回官方AWS SDK 喜欢this 或this)。
虽然难以学习和设置,但 S3 非常灵活且功能强大,因此如果您允许用户将文件上传到您的应用、存储大量文件、想要拥有不同的用户角色/权限,或者只是想要准备扩展,我认为 S3 是选择。
有些服务可以提供简单的设置文件上传和托管,不过你只需要付费,哈哈。
我个人最喜欢的是Filepicker(改名为filestack),你可以试试他们的免费计划,还有meteor package to use。几个月前我使用了它,当时它被称为 filepicker.io,并且运行良好(不过现在我切换到了我自己的 S3)。
我从不建议在 mongoDB 中存储任何静态文件,即使是很小的图像。对于长期和可扩展性,S3 + cloudfront(用于提供静态文件的 CDN)是解决方案。但是,如果您刚刚开始构建您的应用程序,那么您不应该将时间浪费在设置所有这些 AWS 配置/策略上。我建议从 filepicker 开始,只需放入代码 sn-p 即可,然后您就可以专注于构建真正的核心功能。
【讨论】: