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.
Url này không còn khả dụng :( – peanut
Đúng, tôi đã chuyển địa chỉ này tại đây: http://blog.prograils.com/post/46154701464/video-encoding-processor-for-carrierwave –
liên kết được cập nhật không làm việc ... – scientiffic