J'essayais de télécharger plusieurs images avec libellfly dans rails3. J'ai cherché quelques tutoriels, mais je n'en ai pas trouvé. je l'ai trouvé un tutoriel pour envoyer plusieurs fichiers d'image avec Carrierwave, mais ne pourrais pas trouver de chance avec libellule .. toute aide :) s'il vous plaîttéléchargement de plusieurs images avec libellule
Répondre
Préface
Dragonfly lui-même peut être utilisé pour gérer les médias pour votre projet en général, similaire à paperclip . La question elle-même se résume au téléchargement de fichiers multiples dans une application de rails. Les quelques tutoriels disponibles sur ce sujet, qui peuvent facilement être adaptés aux modèles utilisant Dragonfly pour y stocker des fichiers spécifiques. Je vous suggère de regarder dans ceux et d'essayer de les adapter à votre projet.
Cependant, je peux présenter un exemple minimum que j'ai construit pour une application 3.2 rails actuellement en développement, ce qui n'est pas parfait (gestion de validation par exemple), mais peut vous donner quelques points de départ.
Exemple
Juste pour référence, l'idée essentielle est tirée de here. Cet exemple est fait avec Rails 3.2.x. Imaginons que vous ayez une base de données sur les vacances, où les utilisateurs peuvent créer des rapports de voyage sur les vacances qu'ils ont prises. Ils peuvent laisser une petite description, ainsi que quelques images.
Commencez par la construction d'un modèle simple basé ActiveRecord pour les voyages, Appelons juste Trip
pour l'instant:
class Trip < ActiveRecord::Base
has_many :trip_images
attr_accessible :description, :trip_images
end
Comme vous pouvez le voir, le modèle a des images de voyage attaché à elle par une association has_many
. Permet de jeter un coup d'œil sur le modèle TripImage
, qui utilise libellule pour avoir le fichier stocké dans le champ de contenu:
class TripImage < ActiveRecord::Base
attr_accessible :content, :trip_id
belongs_to :trip_id
image_accessor :content
end
L'image de voyage elle-même stocke le fichier joint. Vous pouvez placer des restrictions dans ce modèle, par ex. taille du fichier ou type mime.
Créons un TripController
qui a une action new
et create
(vous pouvez générer ce via un échafaudage si vous le souhaitez, il est de loin rien de fantaisie):
class TripController < ApplicationController
def new
@trip = Trip.new
end
def create
@trip = Trip.new(params[:template])
#create the images from the params
unless params[:images].nil?
params[:images].each do |image|
@trip.trip_images << TripImages.create(:content => image)
end
if @trip.save
[...]
end
end
Rien de spécial ici, à l'exception de la création les images d'une autre entrée que le hachage params
. cela a un sens quand on regarde le champ de téléchargement de fichiers dans le fichier modèle new.html.erb
(ou dans la partie que vous utilisez pour les champs du modèle Trip
): cependant,
[...]
<%= f.file_field :trip_images, :name => 'images[]', :multiple => true %>
[...]
Cela devrait fonctionner pour le moment, il y a aucune limitation pour les images sur ce droit maintenant.Vous pouvez limiter le nombre d'images sur le côté serveur via un custom validator sur le modèle Trip
:
class Trip < ActiveRecord::Base
has_many :trip_images
attr_accessible :description, :trip_images
validate :image_count_in_bounds, :on => :create
protected
def image_count_in_bounds
return if trip_images.blank?
errors.add("Only 10 images are allowed!") if trip_images.length > 10
end
end
Je laisse cela à vous, mais vous pouvez également utiliser des validations côté client sur le champ de fichier, l'idée générale serait être de vérifier les fichiers lors de la modification du champ du fichier (en CoffeeScript):
jQuery ->
$('#file_field_id').change() ->
#disable the form
for file in this.files
#check each file
#enable the form
Résumé
Vous pouvez construire un grand nombre de tutoriels existants, comme libellule ne se comporte pas différemment à d'autres solutions lorsque il vient à juste pour télécharger des fichiers. Cependant, si vous voulez quelque chose de colombophile, je suggérerais jQuery Fileupload, comme beaucoup d'autres ont avant moi.
En tout cas, j'espère pouvoir vous donner un aperçu.
atterrisseur,
flo
- 1. Téléchargement de plusieurs images dans Django admin
- 2. Téléchargement de plusieurs images via Tumblr API
- 3. Téléchargement de plusieurs images PHP, loop?
- 4. Téléchargement de plusieurs images avec le plugin jquery
- 5. VT100 Libellule d'émulation en C# avec SharpSSH
- 6. Libellule et URL courtes
- 7. Téléchargement de plusieurs fichiers avec Qt
- 8. Plusieurs classes avec plusieurs images
- 9. Le téléchargement de plusieurs images ne fonctionne pas?
- 10. le téléchargement de plusieurs images causant 500 erreur
- 11. Téléchargement de plusieurs images en utilisant PHP cURL
- 12. Options de débogueur de script Libellule Opera
- 13. Active plusieurs fichiers/téléchargement d'images avec trombone
- 14. Spécifiez le chemin de commande avec la gemme libellule
- 15. Empêcher le téléchargement des images avec ScrAPI
- 16. Téléchargement à distance de MULTIPLES images
- 17. Comment intégrer le téléchargement de plusieurs images avec UPLOADIFY dans l'administration de django?
- 18. Limite de téléchargement de plusieurs fichiers
- 19. Téléchargement de plusieurs fichiers avec VB.Net
- 20. éléments dynamiques avec plusieurs fichiers de téléchargement
- 21. Téléchargement de plusieurs fichiers avec urlStream + fileStream
- 22. Téléchargement de plusieurs images avec rails_admin (Attachment_fu, Carrierwave, etc.)? Des solutions?
- 23. télécharger plusieurs images avec php
- 24. Postes Wordpress avec plusieurs images
- 25. Partager plusieurs images avec UIActivityViewController
- 26. bouton personnalisé avec plusieurs images
- 27. Télécharger plusieurs images avec asp.net
- 28. URL de l'image dans JSON (RABL, Libellule, Ruby on Rails)
- 29. Ajax téléchargement de fichiers avec plusieurs bouton de téléchargement de fichiers en PHP
- 30. Utilisation de plusieurs images avec favicon