在heroku上使用s3存储选项时访问paperclip临时文件

时间:2010-10-14 10:20:48

标签: ruby-on-rails amazon-s3 heroku paperclip

我正在使用Paperclip gem调整上传照片的大小并将其存储在亚马逊S3上。在上传请求的生命周期中,我需要访问已调整大小的照片以传递给另一个Web服务。

我怀疑在将照片上传到s3之前,imagemagik在某处创建了一个临时文件。我怎样才能访问它。

1 个答案:

答案 0 :(得分:13)

根据Paperclip readme,在处理之后和处理之前会调用一些回调。

每个附件:

  • before_post_process
  • after_post_process

仅适用于特定附件:

  • before_ [附件] _post_process
  • after_ [附件] _post_process

我认为在您的情况下,您应该使用其中一个after回调来获取已调整大小的照片。然后,您应该能够使用queued_for_write访问该文件。例如:

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