0

我需要定义一个特定的结构路径来将我的文件存储在 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'

等等

我读了一个类似的问题,但没有抓住很多。

谢谢。

4

2 回答 2

4

从 Dragonfly 0.9.4 左右的某个时候开始,您可以在模型中执行此操作:

class User < ActiveRecord::Base
  image_accessor :image do
    storage_path{ "users/#{self.user_type}/#{self.login_name" }
  end
  # ...
end
于 2011-07-27T22:37:08.070 回答
2

更新---

只要做这样的事情,如果你真的需要一些特别的东西,你可以像下面这样覆盖。内置更简单的方法:

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
于 2011-01-20T23:28:28.453 回答