#ruby #amazon-s3 #sinatra #carrierwave #fog
#ruby #amazon-s3 #sinatra #carrierwave #туман
Вопрос:
Я создаю приложение для Android, в котором есть серверная часть, написанная на ruby / sinatra. Данные из приложения для Android поступают в виде данных json. Используемая база данных — mongodb.
Я могу перехватывать данные на серверной части. Теперь я хочу загрузить видео на Amazon S3, отправляемое из приложения Android в виде массива байтов. Я также хочу сохранить видео в виде строки в локальной базе данных. Я использовал carrierwave, fog и carrierwave-mongoid gems, но мне не повезло.
Вот несколько блогов, на которые я подписался:
https://blog.engineyard.com/2011/a-gentle-introduction-to-carrierwave/
http://www.javahabit.com/2012/06/03/saving-files-in-amazon-s3-using-carrierwave-and-fog-gem/
Если бы кто-нибудь мог просто подсказать мне, как это сделать конкретно с sinatra и mongodb, потому что именно здесь я сталкиваюсь с основной проблемой.
Ответ №1:
Вы можете подумать об использовании AWS SDK для Android для прямой загрузки на S3, чтобы поток вашего сервера приложений не зависал, пока пользователь загружает файл. Если вы используете такой сервис, как Heroku, вам придется доплачивать $$$ только потому, что у вашего пользователя плохое соединение.
Однако в этом сценарии;
Загрузка на S3 должна быть простой, как только вы установите монтирование с помощью carrierwave.
Вы никогда не должны хранить свое видео в базе данных, так как это замедлит вашу работу! Базы данных оптимизированы не для файлов, а для операционных систем. Видео представляет собой двоичные данные и не может быть сохранено в виде текста, вам понадобится тип blob, если вы хотите совершить это преступление.
ИМО, загрузка на S3 достаточно хороша, поскольку тогда вы можете использовать сервисы Amazon cloudfront CDN для копирования и распространения вашего контента более оптимизированным способом.