2014-06-16 2 views
0

Je construis une application Android qui a un backend écrit sur ruby ​​/ sinatra. Les données de l'application Android viennent sous la forme de données JSON. La base de données utilisée est mongodb.Télécharger des vidéos sur Amazon S3 en utilisant ruby ​​avec sinatra

Je suis capable d'attraper les données sur le backend. Maintenant, ce que je veux faire est de télécharger une vidéo sur Amazon S3 envoyé à partir de l'application Android sous la forme d'un tableau de byte. Je veux également stocker la vidéo sous la forme d'une chaîne dans la base de données locale. J'utilise les gemmes carrierwave, fog et carrierwave-mongoid mais je n'ai pas eu de chance.

Ce sont les quelques blogs que je suivais:

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/

Si quelqu'un pouvait me guider avec la façon de s'y prendre spécifiquement avec sinatra et MongoDB parce que c'est là où je suis face à la problème principal.

Répondre

0

Vous pouvez envisager d'utiliser AWS SDK pour Android pour le télécharger directement sur S3 afin que le thread de votre serveur d'applications ne reste pas bloqué lorsqu'un utilisateur télécharge un fichier. Si vous utilisez un service comme Heroku, vous payerez des $$$ supplémentaires juste parce que votre utilisateur a une connexion moche.

Cependant dans ce scénario;

Le téléchargement vers S3 devrait être simple une fois que vous avez installé votre support en utilisant une onde porteuse.

Vous ne devriez jamais stocker votre vidéo dans la base de données car elle vous ralentira! Les bases de données ne sont pas optimisées pour les fichiers, les systèmes d'exploitation le sont. La vidéo est une donnée binaire et ne peut pas être stockée sous forme de texte, vous auriez besoin d'un type de blob si vous voulez faire ce crime.

IMO, le téléchargement vers S3 est assez bon car alors vous pouvez utiliser les services Amazon Cloudfront CDN pour copier et distribuer votre contenu de manière plus optimisée.

Questions connexes