2016-01-05 4 views
4

Я начинаю в метеор и mongodb, и я ищу способ сохранить много изображений сразу в коллекции mongodb. Если есть демо или что-то, что может мне помочь, пожалуйста, отдайте его мне. Спасибо !Хранение изображений в Mongodb с использованием GridFS с Meteor

+0

здесь вы найдете некоторые материалы, https: //www.meteor.com/tutorials/blaze/collections –

+0

Спасибо! Я знаю, как вставлять данные в коллекцию, но проблема заключается в том, как вставлять изображения – Abdelouhab

ответ

13

Управление загрузки файлов является сложным и трудно, это зависит от того, какой файл и количество файлов, которые вы имеете дело с

Небольшое количество файлов

Если количество и размер изображений или файлов не очень большой, чем вы можете попробовать MongoDB GridFS, есть два известных пакетов, которые поддерживают GridFS:

  • CollectionFS: meteor add cfs:standard-packages cfs:gridfs CollectionFS также поддерживает сервер файловой системы (никогда не использовать это для загрузки файлов пользователя) AWS-S3, или даже d ropbox. CFS действительно мощный и имеет множество полезных функций. Тем не менее, я столкнулся с некоторыми проблемами при его использовании и могу выяснить, как обойти, поэтому я отошел ... (huge number of open bug tickets не звучит положительно)
  • file-collection: meteor add vsivsi:file-collection легкий вес по сравнению с CFS, только поддержка GridFS. Я переключился на коллекцию файлов некоторое время после выхода из CFS, легче встать и запустить, а IMO более предсказуем.

НО! Проблема с GridFS заключается в том, что MongoDB стоит дорого, см. mongolab и compose.io (предыдущий mongohq) цены. Это дорого, потому что сохранение mongo тяжело, даже отладка сложна, и если ваш сбой db, ваше приложение не будет работать! Так что сохранение файлов из mongoDB может быть лучшей идеей ...

Итак, где я должен хранить загруженные пользователем файлы?

Короткий ответ: S3 (или облако Google/Лазурный эквивалент), вы можете узнать цену 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, просто отбросьте фрагмент кода, и он просто работает, а затем вы можете сосредоточиться на создании своих основных основных функций.

Смежные вопросы