Paperclip and Amazon S3 how to do paths?

后端 未结 2 494
既然无缘
既然无缘 2021-02-13 03:56

How do I create paths with paperclip when using Amazon S3?

My directory on my bucket is:

/image/:id/:filename

My model:



        
相关标签:
2条回答
  • 2021-02-13 04:32

    I wrote a post about it a few months back. I also wrote about how you can add properties from the class, for example not using an id (I don't like it) and using a token instead.

    Read the post here...

    The basics:

    to get a path with an id

    has_attached_file :avatar,
      :styles =>
      {
        :tiny => "48x48>",
        :preview => "175x175>",
        :large => "300x300>",
        :huge => "500x500>"
      },
      :storage => :s3,
      :s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
      :path => ":class/:attachment/:id/:style.:extension",
      :bucket => 'lopsum',
      :default_url => "/images/photo01.jpg"
    

    and, if you want to change it to something else...

    has_attached_file :avatar,
      :styles =>
      {
        :tiny => "48x48>",
        :preview => "175x175>",
        :large => "300x300>",
        :huge => "500x500>"
      },
      :storage => :s3,
      :s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
      :path => ":class/:attachment/:token/:style.:extension",
      :bucket => 'lopsum',
      :default_url => "/images/photo01.jpg"
    

    and in an initializer

    Paperclip.interpolates :token do |attachment, style|
      attachment.instance.token
    end
    
    0 讨论(0)
  • 2021-02-13 04:41

    Try this:

      has_attached_file :image,
        :storage => :s3,
        :bucket => 'mybucket',
        :path => "/image/:id/:filename",
        :s3_credentials => {
          :access_key_id => ENV['S3_KEY'],
          :secret_access_key => ENV['S3_SECRET']
        }
    
    0 讨论(0)
提交回复
热议问题