Paperclip和Amazon S3如何做路径?

Rai*_*ner 15 ruby ruby-on-rails paperclip ruby-on-rails-3

使用Amazon S3时如何使用回形针创建路径?

我的目录上的目录是:

/image/:id/:filename
Run Code Online (Sandbox Code Playgroud)

我的模特:

  has_attached_file :image,
    :storage => :s3,
    :bucket => 'mybucket',
    :s3_credentials => {
      :access_key_id => ENV['S3_KEY'],
      :secret_access_key => ENV['S3_SECRET']
    }
Run Code Online (Sandbox Code Playgroud)

Tim*_*ick 20

试试这个:

  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']
    }
Run Code Online (Sandbox Code Playgroud)


Ken*_*Dev 10

几个月前我写了一篇关于它的帖子.我还写过如何从类中添加属性,例如不使用id(我不喜欢它)并使用令牌代替.

在这里阅读帖子......

基础:

获取带有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"
Run Code Online (Sandbox Code Playgroud)

而且,如果你想把它改成别的东西......

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"
Run Code Online (Sandbox Code Playgroud)

并在初始化程序中

Paperclip.interpolates :token do |attachment, style|
  attachment.instance.token
end
Run Code Online (Sandbox Code Playgroud)