tôi đã cố gắng tải lên nhiều hình ảnh với chuồn chuồn trong đường ray3. tôi đã tìm kiếm một số hướng dẫn, nhưng không thể tìm thấy bất kỳ hướng dẫn nào. tôi tìm thấy một hướng dẫn cho nhiều tải lên hình ảnh với Carrierwave, nhưng couldnt tìm may mắn với con chuồn chuồn .. bất kỳ sự giúp đỡ xin vui lòng :)tải lên nhiều hình ảnh với chuồn chuồn
Trả lời
Lời nói đầu
Dragonfly chính nó có thể được sử dụng để quản lý các phương tiện truyền thông cho dự án của bạn nói chung, tương tự như paperclip . Bản thân câu hỏi sẽ tự động tải xuống nhiều tệp trong một ứng dụng đường ray. Một số hướng dẫn về chủ đề này có sẵn, có thể dễ dàng thích nghi với các mô hình sử dụng Dragonfly để lưu trữ các tệp cụ thể trên chúng. Tôi sẽ đề nghị bạn xem xét chúng và cố gắng thích ứng với chúng cho dự án của bạn.
Tuy nhiên, tôi có thể trình bày một ví dụ tối thiểu mà tôi đã xây dựng cho ứng dụng đường ray 3.2 hiện đang phát triển, không hoàn hảo (ví dụ như xử lý xác thực), nhưng có thể cung cấp cho bạn một số điểm bắt đầu.
Ví dụ
Chỉ để tham khảo, ý tưởng thiết yếu được lấy từ here. Ví dụ này được thực hiện với Rails 3.2.x.
Giả sử bạn có cơ sở dữ liệu kỳ nghỉ, nơi người dùng có thể tạo báo cáo chuyến đi về các kỳ nghỉ họ đã đi. Họ có thể để lại một mô tả nhỏ, cũng như một số hình ảnh.
Bắt đầu ra bằng cách xây dựng một đơn giản mô hình ActiveRecord dựa cho các chuyến đi, cho phép chỉ cần gọi nó Trip
cho bây giờ:
class Trip < ActiveRecord::Base
has_many :trip_images
attr_accessible :description, :trip_images
end
Như bạn có thể thấy, mô hình đã hình ảnh chuyến đi gắn liền với nó thông qua một hiệp hội has_many
. Cho phép có một cái nhìn nhanh vào mô hình TripImage
, trong đó sử dụng con chuồn chuồn vì có các tập tin được lưu trữ trong lĩnh vực nội dung:
class TripImage < ActiveRecord::Base
attr_accessible :content, :trip_id
belongs_to :trip_id
image_accessor :content
end
Hình ảnh chuyến đi nó tự lưu trữ các tập tin đính kèm tập tin. Bạn có thể đặt bất kỳ phần nào trong mô hình này, ví dụ: kích thước tệp hoặc loại mime.
Hãy tạo một TripController
trong đó có một hành động new
và create
(bạn có thể tạo ra điều này qua giàn giáo nếu bạn thích, nó là của xa không có gì lạ mắt):
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
Không có gì đặc biệt ở đây, với ngoại lệ của tạo hình ảnh từ một mục nhập khác với mã băm params
. điều này làm cho cảm giác khi nhìn vào lĩnh vực tập tin tải lên trong new.html.erb
tập tin mẫu (hoặc trong một phần bạn sử dụng cho các lĩnh vực trên mô hình Trip
):
[...]
<%= f.file_field :trip_images, :name => 'images[]', :multiple => true %>
[...]
này nên làm việc cho thời điểm này, tuy nhiên, có không có giới hạn cho các hình ảnh về điều này ngay bây giờ.Bạn có thể giới hạn số lượng hình ảnh ở phía máy chủ thông qua một custom validator trên mô hình 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
Tôi để điều này tùy thuộc vào bạn, nhưng bạn cũng có thể sử dụng kiểm chứng thực phía khách hàng trên các lĩnh vực tập tin, ý tưởng chung sẽ được để kiểm tra các tập tin khi thay đổi lĩnh vực tập tin (trong CoffeeScript):
jQuery ->
$('#file_field_id').change() ->
#disable the form
for file in this.files
#check each file
#enable the form
Tóm tắt
Bạn có thể xây dựng rất nhiều ra các hướng dẫn hiện hành, như con chuồn chuồn không cư xử mà khác với các giải pháp khác khi chỉ cần chỉ cần để tải tệp lên. Tuy nhiên, nếu bạn muốn một cái gì đó fancier, tôi đề nghị jQuery Fileupload, như nhiều người khác có trước tôi.
Dù sao, tôi hy vọng tôi có thể cung cấp một số thông tin chi tiết.
lg,
flo
- 1. Tải lên nhiều hình ảnh với bản xem trước
- 2. Tải lên nhiều hình ảnh trong quản trị Django
- 3. Tải lên nhiều hình ảnh thông qua Tumblr API
- 4. API Tumblr - cách tải nhiều hình ảnh lên một Photoet
- 5. html5 Tải lên hình ảnh
- 6. Tải lên và lưu trữ hình ảnh
- 7. Cách tải lên tệp (hình ảnh) với selen, python
- 8. Django với jquery-tinymce tải lên hình ảnh plugin
- 9. Magento - Lỗi khi tải lên hình ảnh
- 10. Tải lên hình ảnh jQuery ajax
- 11. tải hình ảnh từ android lên webservice
- 12. khi đưa hình ảnh vào ứng dụng/asssets và khi nào/công khai/hình ảnh trong đường ray 3.1?
- 13. WISiWYG với hình ảnh tải lên: Cách Django
- 14. iOS - hình ảnh tải lên với ImageShack JSON API
- 15. Thử nghiệm Tải lên hình ảnh với Django và Webtest
- 16. Tải lên nhiều tệp với cURL
- 17. Tải hình ảnh lên thẻ img
- 18. Android-Django Tải lên hình ảnh
- 19. Hoạt động quản trị nhiều tệp/hình ảnh tải lên với kẹp giấy
- 20. Tải hình ảnh lên đường ray
- 21. Trường mẫu tải lên hình ảnh Magento
- 22. Cách tải hình ảnh lên canvas HTML5
- 23. Tải lên hình ảnh bằng Phonegap: InvalidCastException
- 24. Tải hình ảnh lên trong ASP.NET MVC
- 25. Tải hình ảnh từ iOS lên PHP
- 26. jQuery Hình ảnh Tải lên - CodeIgniter
- 27. Thực tiễn tốt nhất để tải lên nhiều hình ảnh (2000+) lên máy chủ
- 28. Làm thế nào để tải lên hình ảnh với hình ảnh xem trước bootstrap của Jasny?
- 29. Tải lên nhiều tệp với jQuery
- 30. Đang tải lên nhiều hình ảnh trong các hình thức tương tự sử dụng MVC3