Question

Je dois définir un chemin de structure spécifique pour stocker mes fichiers dans S3.

Exemple:

Au lieu de

  

'bucket_name / 2010/12/23/127/43/2345 / file.jpg'

besoin

  

'bucket_name / artistes / elvis_presley / faceshot / 100x100.jpg'

     

'bucket_name / livres / the_black_cat / couverture / 180x280.jpg'

etc.

Je lis une question similaire, mais ne pas attrappe beaucoup.

Merci.

Était-ce utile?

La solution

UPDATE ---

Il suffit de faire quelque chose comme ça, vous pouvez remplacer comme ci-dessous si vous avez vraiment besoin de quelque chose de spécial. Une manière plus facile est construit en:

some_image.store({:path => "images/some_identifier/the_name.jpg"}) 

C'est ce que nous sont stockés sur votre seau.

Original Post


Collez ceci dans un fichier, par exemple dragonfly.rb, dans 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

Autres conseils

Depuis quelque temps autour Dragonfly 0.9.4, vous pouvez le faire dans le modèle:

class User < ActiveRecord::Base
  image_accessor :image do
    storage_path{ "users/#{self.user_type}/#{self.login_name" }
  end
  # ...
end
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top