我需要定义一个特定的结构路径来将我的文件存储在 S3 中。
例子:
代替
'bucket_name/2010/12/23/127/43/2345/File.jpg'
我需要
'bucket_name/艺术家/elvis_presley/faceshot/100x100.jpg'
'bucket_name/books/the_black_cat/cover/180x280.jpg'
等等
我读了一个类似的问题,但没有抓住很多。
谢谢。
我需要定义一个特定的结构路径来将我的文件存储在 S3 中。
例子:
代替
'bucket_name/2010/12/23/127/43/2345/File.jpg'
我需要
'bucket_name/艺术家/elvis_presley/faceshot/100x100.jpg'
'bucket_name/books/the_black_cat/cover/180x280.jpg'
等等
我读了一个类似的问题,但没有抓住很多。
谢谢。
从 Dragonfly 0.9.4 左右的某个时候开始,您可以在模型中执行此操作:
class User < ActiveRecord::Base
image_accessor :image do
storage_path{ "users/#{self.user_type}/#{self.login_name" }
end
# ...
end
更新---
只要做这样的事情,如果你真的需要一些特别的东西,你可以像下面这样覆盖。内置更简单的方法:
some_image.store({:path => "images/some_identifier/the_name.jpg"})
这就是我们将存储在您的存储桶中的内容。
原帖
把它放在一个文件中,比如dragonfly.rb,在config/initializers中
# Monkey patch for Dragonfly's S3 implementation
module Dragonfly
module DataStorage
class S3DataStore
def generate_uid(name)
# Replace this sucker for a better name
"#{Time.now.strftime '%Y/%m/%d/%H/%M/%S'}/#{rand(1000)}/#{name.gsub(/[^\w.]+/, '_')}"
end
end
end
end