How do I create paths with paperclip when using Amazon S3?
My directory on my bucket is:
/image/:id/:filename
My model:
  has_attached_file :image,
    :storage => :s3,
    :bucket => 'mybucket',
    :s3_credentials => {
      :access_key_id => ENV['S3_KEY'],
      :secret_access_key => ENV['S3_SECRET']
    }
An S3 bucket can be accessed through its URL. The URL format of a bucket is either of two options: http://s3.amazonaws.com/[bucket_name]/ http://[bucket_name].s3.amazonaws.com/
The short answer is you can't migrate a S3 bucket from one region to another.
In AWS Explorer, expand the Amazon S3 node, and double-click a bucket or open the context (right-click) menu for the bucket and choose Browse. In the Browse view of your bucket, choose Upload File or Upload Folder. In the File-Open dialog box, navigate to the files to upload, choose them, and then choose Open.
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']
    }
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With