2010-06-14 1 views
1

J'ai décidé d'utiliser Amazon S3 pour le stockage de documents pour une application que je crée. Un problème que je rencontre est le moment où j'ai besoin de télécharger les fichiers sur S3, j'ai besoin de créer un objet document dans mon application afin que mes utilisateurs puissent effectuer des actions CRUD.Comment puis-je empêcher le téléchargement de fichiers double avec Amazon S3?

Une solution est de permettre un double téléchargement. Un utilisateur télécharge un document sur le serveur de mon application Rails. Je valide et crée l'objet, puis le passe à S3. Un problème avec cela est que les indicateurs de progrès deviennent plus compliqués. Utiliser la plupart des plugins prêts à l'emploi montrerait au client que le téléchargement du fichier est terminé car il est sur mon serveur, mais il y aurait alors un retard décent lorsque le fichier passerait de mon serveur à S3. Ceci introduit également de la bande passante inutile (du moins cela ne semble pas nécessaire)

L'autre solution à laquelle je pense est de télécharger le fichier directement dans S3 avec une requête AJAX, et quand cela est réussi, faites une deuxième requête AJAX à stocke l'objet dans ma base de données. Un problème ici est que je devrais valider le fichier après son téléchargement, ce qui signifie que je dois exécuter du code de nettoyage dans S3 si la validation échoue.

Les deux semblent tout aussi désordonnés.

Est-ce que quelqu'un a quelque chose de plus élégant qui ne dérange pas le partage? J'imagine que c'est une situation courante avec "stockage en nuage" étant très populaire aujourd'hui. Peut-être que je regarde mal.

+0

J'ai posé une question similaire: http://stackoverflow.com/questions/5796468/amazon-s3-multipart-upload-with-plupload-and-rails-3 La question est similaire parce que j'essaie de résoudre le même problème problème, mais j'ai pensé à une approche pour utiliser la segmentation pour éliminer le double temps. Est-ce que votre application sur EC2? Le mien est, mais il est encore lent à réenregistrer le gros fichier. – Amala

Répondre

2

Sauf s'il y a une raison particulière de ne pas utiliser un trombone, je le recommande fortement. Utilisé en conjonction avec un travail retardé et un trombone retardé, l'utilisateur télécharge le fichier sur le système de fichiers de votre serveur où vous effectuez toute la validation dont vous avez besoin. Un travail retardé le traite et le stocke sur s3. Vraiment, vraiment facile à mettre en place et une meilleure expérience utilisateur.

Questions connexes