2012-08-07 25 views

Trả lời

1

Tôi đã viết một bài đăng trên blog về cách tạo bộ xử lý tùy chỉnh để tạo hình thu nhỏ của video, có thể bạn sẽ thấy nó hữu ích.

https://prograils.com/posts/video-encoding-processor-for-carrierwave/

+1

Url này không còn khả dụng :( – peanut

+1

Đúng, tôi đã chuyển địa chỉ này tại đây: http://blog.prograils.com/post/46154701464/video-encoding-processor-for-carrierwave –

+0

liên kết được cập nhật không làm việc ... – scientiffic

6

Câu hỏi của OP là cách xử lý tệp không phải là hình ảnh.

Vui lòng xem tệp nguồn này trên GitHub: carrierwave/lib/carrierwave/uploader/processing.rb và kiểm tra nhận xét.

Bạn sẽ phải tạo riêng CarrierWave uploader sub-class của bạn và gắn kết nó trong mô hình của bạn như thế này:

def MyModel < ActiveRecord::Base 

    # this is where the uploaded file will be available in your model, 
    # as a `MyUploader` instance: 
    # 
    mount_uploader :uploaded_file, MyUploader 

    ... 
    end 

Xin lưu ý rằng nó được gắn trên các thuộc tính ActiveRecord :uploaded_file. Điều này có nghĩa là khi bạn truy cập :uploaded_file từ mô hình của mình, bạn sẽ nhận được một phiên bản trình tải lên CarrierWave của bạn cho tệp cụ thể đã được tải lên.

Bạn có thể dễ dàng xác định xử lý của bạn bên trong người tải lên của bạn như sau:

class MyUploader < CarrierWave:Uploader::Base 
    process :my_custom_processing => [param1,param2,param3] 

    def my_custom_processing(param1,param2,param3) 
     ... 
     # e.g. you could call a method which is defined elsewhere, 
     # which operates on a file: 
     my_nifty_file_processor(self.uploaded_file) 
     # 
     # or you could just do this directly: 
     uploaded_data = self.uploaded_file.read 
     ... 
    end 
    end 

Bên my_nifty_file_processor, bạn chỉ cần gọi read trên đối tượng đó được thông qua vào để đọc các tập tin.

CarrierWave cho phép bạn gọi read trên bất kỳ phiên bản Trình tải lên nào (= bất kỳ phiên bản nào của tệp được tải lên) và nó sẽ đọc tệp đó.

Thêm một Mẹo:

Đôi khi bạn cần truy cập vào mô hình ActiveRecord trong tải lên của bạn, mà các tập tin đã được tải lên.

Đơn giản chỉ cần truy cập vào nó bên trong mã tải lên của bạn như thế này:

 self.model 

này cho phép bạn lưu trữ thêm thông tin về các tập tin tải lên, chẳng hạn như định dạng, trực tiếp trong mô hình AR của bạn.

+1

Cảm ơn bạn, tôi tìm thấy lời giải thích của bạn có liên quan hơn rằng một trong những hiện tại hàng đầu. – springloaded

Các vấn đề liên quan