Próbowałem przesłać wiele obrazów za pomocą ważki w szynach3. Szukałem kilku tutoriali, ale nie mogłem znaleźć żadnych. znalazłem poradnik dla wielokrotnego przesyłania obrazu z Carrierwave, ale nie mogliśmy znaleźć szczęście z ważki .. Każda pomoc proszę :)Przesyłanie wielu obrazów za pomocą ważki
Odpowiedz
Przedmowa
Dragonfly sama może być używany do zarządzania nośnikami dla swojego projektu w ogóle, podobnie jak paperclip . Samo pytanie sprowadza się do wielokrotnego przesyłania plików w aplikacji szyny. Dostępne są niektóre samouczki na ten temat, które można łatwo dostosować do modeli używających Dragonfly do przechowywania określonych plików na nich. Sugerowałbym, żebyś spojrzał na te i spróbował dostosować je do swojego projektu.
Mogę jednak przedstawić minimalny przykład, który stworzyłem dla obecnie opracowywanej aplikacji szynowej 3.2, która nie jest idealna (na przykład obsługa sprawdzania poprawności), ale może dać ci kilka punktów początkowych.
Przykład
Tylko dla odniesienia, niezbędne pomysł pochodzi od here. Ten przykład jest wykonywany z Railsami 3.2.x.
Załóżmy, że masz bazę danych na wakacje, w której użytkownicy mogą tworzyć raporty podróży z wakacji, które zrobili. Mogą zostawić mały opis, a także kilka zdjęć.
Zacznij od budowy prostego modelu do ActiveRecord opartą na wycieczki, pozwala właśnie nazwać Trip
teraz:
class Trip < ActiveRecord::Base
has_many :trip_images
attr_accessible :description, :trip_images
end
Jak widać, model ten zdjęć trip przymocowany do niego za pośrednictwem stowarzyszenia has_many
. Pozwala rzucić okiem na model, który wykorzystuje TripImage
ważki za posiadanie plik zapisany w polu Treść:
class TripImage < ActiveRecord::Base
attr_accessible :content, :trip_id
belongs_to :trip_id
image_accessor :content
end
Podróż obraz przechowuje własny pliku załącznika. Możesz umieścić ograniczenia w tym modelu, np. rozmiar pliku lub typ MIME.
Stwórzmy TripController
który ma działanie new
i create
(można wygenerować to przez rusztowania, jeśli chcesz, to jest zdecydowanie nic szczególnego):
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
nic specjalnego tutaj, z wyjątkiem tworzenia obrazy z innego wpisu niż skrót hasłowy params
. Ma to sens, gdy patrząc na polu przesyłania plików w szablonie pliku new.html.erb
(lub częściowego korzystania z pól na modelu Trip
):
[...]
<%= f.file_field :trip_images, :name => 'images[]', :multiple => true %>
[...]
To powinno działać w tej chwili, jednak istnieją żadnych ograniczeń dotyczących obrazów w tej chwili.Można ograniczyć liczbę obrazów na stronie serwera za pośrednictwem custom validator modelu 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
zostawiam to do ciebie, ale można też użyć po stronie klienta walidacji na polu Plik, ogólna idea będzie być sprawdzenie plików na zmianę pola pliku (w coffeescript):
jQuery ->
$('#file_field_id').change() ->
#disable the form
for file in this.files
#check each file
#enable the form
Podsumowanie
można zbudować wiele z istniejących tutoriali, jak ważka, że nie zachowuje się inaczej niż inne rozwiązania, gdy przychodzi do tylko do przesyłania plików. Jednakże, jeśli chcesz coś bardziej wyszukanego, sugerowałbym jQuery Fileupload, jak wielu innych ma przede mną.
W każdym razie, mam nadzieję, że mogę zapewnić pewien wgląd.
lg,
flo
- 1. Przesyłanie obrazów za pomocą okHttp
- 2. Przesyłanie wielu plików za pomocą cURL
- 3. Przesyłanie wielu obrazów za pośrednictwem interfejsu API Tumblr
- 4. Przesyłanie wielu plików za pomocą jQuery
- 5. Udostępnianie wielu obrazów za pomocą UIActivityViewController
- 6. OpenCV: Porównanie wielu obrazów za pomocą ORB
- 7. Przesyłanie wielu obrazów w administratorze Django
- 8. Retrofit Przesyłanie wielu obrazów do jednego klucza
- 9. Przesyłanie obrazów iOS za pośrednictwem AFNetworking 2.0
- 10. Przesyłanie wielu plików za formData()
- 11. Przesyłanie wielu obrazów przy użyciu AJAX, PHP i jQuery
- 12. Przesyłanie wielu obrazów z innymi parametrami w Swift
- 13. Przesyłanie i przechowywanie obrazów
- 14. Przesyłanie wielu zdjęć z siatkówką?
- 15. Jak przetestować przesyłanie wielu plików za pomocą Cucumber/Capybara?
- 16. Przesyłanie wielu plików i metadanych za pomocą CXF
- 17. przesyłanie wielu plików ze skryptu powłoki za pomocą standardowego wejścia
- 18. Przesyłanie wielu plików za pomocą multer, ale z różnych pól?
- 19. Przesyłanie obrazu postępów za pomocą URLLoader AS3
- 20. Przesyłanie parametrów za pomocą initWithNibName:
- 21. Przesyłanie plików za pomocą extjs4
- 22. Przesyłanie plików za pomocą Sinatry
- 23. Przesyłanie plików za pomocą RichFaces
- 24. Przesyłanie wideo za pomocą iPhone'a
- 25. Przesyłanie zdjęć za pomocą ajaxu
- 26. Przesyłanie wielu zdjęć z podglądem
- 27. wysyłanie obrazów za pomocą RESTAPI
- 28. Przetwarzanie obrazów za pomocą hadoopu
- 29. Przesyłanie wielu plików do różnych adresów URL za pomocą przesyłania plików za pomocą narzędzia ng2
- 30. Przesyłanie wielu plików za pomocą Sails.js 0.10 i Skipper za pomocą Dropzone.js