2014-12-10 2 views
3

Я хочу, чтобы пользователи могли загружать файлы, такие как изображения, PDF-файлы, документы Word, аудиофайлы и т. Д. Я хочу знать, следует ли хранить все файлы на сервере локально или использовать внешний хостинг-файл, из которого я могу доступ к файлам с использованием API.Как я могу обрабатывать загрузку файлов в Meteor?

Если я должен сохранить локально, как это сделать на MeteorJS? Какие пакеты или методы для этого вы бы порекомендовали?

ответ

5

Использование стороннего сервиса, такого как Amazon (S3 или Cloud Front), лучше всего, потому что это уменьшит нагрузку на ваше приложение. Такой пакет поможет в этом процессе очень быстро: https://atmospherejs.com/edgee/slingshot.

7

Возможно хранение файлов на вашем сервере на месте, вам придется хранить их в специальной папке и обслуживать ее содержимое с помощью Apache или Nginx, однако я не думаю, что это хорошая идея, потому что вы собираетесь тратить ресурсов сервера приложений для задачи, которая намного лучше выполняется внешними службами хранения (Google Cloud Storage, Amazon S3 и т. д.).

Вы даже можете хранить файлы в MongoDB, но это еще хуже, потому что они не будут легко кэшируемы и несколько неэффективны и не подлежат уничтожению.

Самый элегантный способ состоит в том, чтобы загрузить файлы непосредственно с клиента конечного пользователя на внешние серверы службы хранения, даже не проходя через сервер приложений Meteor. Клиент будет отправлять только URL сохраненных файлов на ваш сервер Meteor, чтобы сохранить их в MongoDB. Внешние службы хранения имеют преимущество, предлагая дешевые цены на Gb/месяц и обеспечивающие высокую степень диспетчеризации, репликацию на нескольких серверах и т. Д.

Существует пакет Meteor, который реализует этот рабочий процесс, я лично его не тестировал но я уверен, что это надежный материал, и я попробую.

https://github.com/CulturalMe/meteor-slingshot

Конфигурация может быть немного трудно, чтобы получить это право в первый раз, но это, безусловно, путь.

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