stavo provando per il caricamento di più immagini con dragonfly in rails3. ho cercato alcuni tutorial, ma non ho trovato nessuno. ho trovato un tutorial per più caricamento delle immagini con Carrierwave, ma couldnt trovare fortuna con libellula .. qualsiasi aiuto per favore :)caricamento di più immagini con la libellula
risposta
Prefazione
Dragonfly stesso può essere utilizzato per gestire i supporti per il progetto in generale, simile a paperclip . La domanda in sé si riduce al caricamento di più file all'interno di un'applicazione di rotaie. Sono disponibili alcuni tutorial su questo argomento, che possono essere facilmente adattati ai modelli che utilizzano Dragonfly per archiviare su di essi file specifici. Ti suggerirei di esaminarli e provare ad adattarli al tuo progetto.
Tuttavia, posso presentare un esempio minimo che ho creato per un'applicazione di rails 3.2 attualmente in sviluppo, che non è perfetta (gestione della convalida, ad esempio), ma può darti dei punti di partenza.
Esempio
Solo per riferimento, l'idea essenziale è tratto dal here. Questo esempio è fatto con Rails 3.2.x.
Supponiamo che tu disponga di un database per le vacanze, dove gli utenti possono creare rapporti di viaggio sulle vacanze che hanno scattato. Possono lasciare una piccola descrizione, così come alcune immagini.
iniziare con la costruzione di un semplice modello basato ActiveRecord per i viaggi, consente solo chiamare Trip
per ora:
class Trip < ActiveRecord::Base
has_many :trip_images
attr_accessible :description, :trip_images
end
Come si può vedere, il modello ha le immagini viaggio collegato ad esso tramite un'associazione has_many
. Diamo un rapido sguardo al modello TripImage
, che utilizza libellula per avere il file memorizzato nel campo dei contenuti:
class TripImage < ActiveRecord::Base
attr_accessible :content, :trip_id
belongs_to :trip_id
image_accessor :content
end
L'immagine viaggio è di per sé memorizza il file allegato. Puoi posizionare qualsiasi restrizione all'interno di questo modello, ad es. dimensione del file o tipo mime.
Creiamo un TripController
, che ha un'azione new
e create
(è possibile generare questo tramite ponteggi se si vuole, è di gran lunga niente di speciale):
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
Niente di speciale qui, con l'eccezione di creare le immagini da un'altra voce rispetto all'hash params
. questo ha senso quando guardando il campo di caricamento file all'interno del file modello new.html.erb
(o nel parziale, che si utilizza per i campi sul modello Trip
):
[...]
<%= f.file_field :trip_images, :name => 'images[]', :multiple => true %>
[...]
Questo dovrebbe funzionare per il momento, tuttavia, ci sono senza limitazioni per le immagini su questo adesso.È possibile limitare il numero di immagini sul lato server tramite un custom validator sul modello 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
lascio questo a voi, ma si potrebbe anche usare convalide lato client sul campo di file, l'idea generale sarebbe essere quello di controllare i file su di cambiare il campo del file (in CoffeeScript):
jQuery ->
$('#file_field_id').change() ->
#disable the form
for file in this.files
#check each file
#enable the form
Sommario
Si può costruire un sacco di tutorial già esistenti, come la libellula non si comporta in modo diverso che ad altre soluzioni quando si tratta di solo per caricare file. Tuttavia, se desideri qualcosa di più elaborato, suggerirei jQuery Fileupload, come molti altri hanno prima di me.
In ogni caso, spero di poter fornire qualche intuizione.
lg,
flo
- 1. Caricamento di più immagini nell'amministratore di Django
- 2. Rileva più eventi di caricamento di immagini
- 3. Caricamento di più immagini con un campo di input
- 4. Caricamento di più immagini tramite l'API Tumblr
- 5. Caricamento di più immagini tramite AFNetworking
- 6. Caricamento di più immagini con Picasso sullo sfondo
- 7. Caricamento di più immagini con il tiro al volo?
- 8. caricamento di più immagini nella stessa forma con MVC3
- 9. Carica più immagini con anteprima
- 10. Caricamento lento di immagini grandi con Picasso
- 11. caricamento di più immagini + campi di testo in ASP.NET MVC
- 12. django rest framework per il caricamento di più immagini
- 13. Caricamento e memorizzazione di immagini
- 14. Combina caricamento delle immagini ajax con la forma presentare ajax
- 15. Picasso caricamento delle immagini
- 16. Caricamento lento con immagini "reattive" (altezza sconosciuta)
- 17. Caricamento immagini in modo sincrono con javascript
- 18. Caricamento immagini in BackgroundWorker
- 19. Caricamento immagini con FTP su Android
- 20. Caricamento immagini in LaTeX
- 21. Caricamento di immagini Meteor Amazon S3 con miniature
- 22. Pre-caricamento immagini
- 23. In quali circostanze il caricamento delle immagini singolarmente con HTTP/2 è più lento del caricamento di tutte le immagini contemporaneamente con uno sprite a HTTP/1.1?
- 24. Caricamento di più file con controllo md5 prima del caricamento
- 25. Condividere più immagini con UIActivityViewController
- 26. Keras caricamento immagini a colori
- 27. JavaFX - Caricamento immagini e problemi di memoria
- 28. Isotopo bootstrap e caricamento lazyload/caricamento di immagini via json
- 29. Caricamento di più file contemporaneamente con Flex
- 30. caricamento di più file con graffetta