2010-10-14 38 views
9

Tôi đang sử dụng đá quý Paperclip để đổi kích thước ảnh tải lên và lưu trữ chúng trên amazon S3. Tôi cần quyền truy cập vào ảnh được đổi kích thước để chuyển sang một dịch vụ web khác, trong suốt vòng đời của yêu cầu tải lên.Truy cập vào tệp temp kẹp giấy khi sử dụng tùy chọn bộ nhớ s3 trên heroku

Tôi nghi ngờ có tệp tạm thời được tạo ở đâu đó mà imagemagik sử dụng trước khi ảnh được tải lên s3. Làm thế nào tôi có thể truy cập vào nó.

Trả lời

13

Theo Paperclip readme có một vài cuộc gọi lại mà nó gọi sau và trước khi xử lý.

Đối mỗi tập tin đính kèm:

  • before_post_process
  • after_post_process

Chỉ dành cho một tập tin đính kèm cụ:

  • before_ [đính kèm] _post_process
  • after_ [đính kèm] _post_process

Tôi nghĩ rằng trong trường hợp của bạn, bạn nên sử dụng một trong những after callbacks để có được những hình ảnh thay đổi kích cỡ. Sau đó, bạn sẽ có thể truy cập tệp với queued_for_write. Ví dụ:

class MyModel < ActiveRecord::Base 
    has_attached_file :photo, :styles => { :small => "300x300>" } 
    after_post_process :send_photo 

    private 
    def send_photo 
    path = photo.queued_for_write[:small].path 
    # upload the photo to the ws here 
    end 

end 
+1

Cảm ơn Matt, điều này có vẻ như những gì tôi đang tìm kiếm. Các mảnh tôi seamed được thiếu là phương pháp queued_for_write. Tôi sẽ bắn nó vào ngày mai và báo cáo lại. –

+0

Đã hoạt động hoàn hảo. Cảm ơn! –

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