Le téléchargement d'un fichier dans un répertoire en dehors de RACINE RAILS avec attachment_fu

StackOverflow https://stackoverflow.com/questions/1387577

  •  21-09-2019
  •  | 
  •  

Question

Je suis en train d'utiliser attachment_fu pour télécharger des fichiers dans un répertoire en dehors de la RAILS_ROOT. Je veux que les fichiers soient enregistrés ~/APP_NAME/uploads/ afin qu'ils puissent être approuvés / rejetés avant d'être rendus publics. J'ai essayé la configuration suivante pour has_attachment:

has_attachment  :storage => :file_system,
                :path_prefix => "~/APP_NAME/uploads/",
                :max_size => 5.megabytes

Malheureusement, cette configuration crée simplement la structure de répertoire ~/APP_NAME/uploads/ dans RAILS_ROOT. De toute façon pour enregistrer le fichier en dehors de RAILS_ROOT?

Était-ce utile?

La solution 2

J'ai trouvé une autre méthode qui me convient mieux que d'utiliser des chemins relatifs. J'ai ajouté une méthode appelée full_filename à ma classe d'attache:

class attachment < ActiveRecord::Base
    def full_filename
       return  "/Users/ron/attachments/#{id}.#{file_format}"
    end
end

Autres conseils

Ceci est probablement pas un problème Attachment-Fu, mais plutôt comment gère Ruby File I / O, ainsi que la façon dont les fichiers sont stockés sous Unix.

Ainsi, par exemple, si votre application vit, par exemple, ~ / Users / ron / APP_NAME

Si vous modifiez le code ci-dessus:

:path_prefix => "~/APP_NAME/uploads/"

Pour:

:path_prefix => "../#{RAILS_ROOT}/uploads"

Les fichiers seront stockés dans un dossier appelé "" dans les derniers upload ~ / Users / ron / uploads. Le « ../ » signifie un répertoire dessus de la racine Rails en cours. Si vous voulez aller jusqu'à deux répertoires, il serait « ../../ » et ainsi de suite.

Mais cela ne concerne que la navigation hiérarchique. Si vous vouliez dire Attachment-Fu pour stocker des fichiers dans un répertoire hardcoded dans votre système de fichiers, vous pouvez donner un chemin de fichier tel que « ~ / Users / ron / APP_NAME / uploads », mais gardez à l'esprit hardcoding dans un chemin de fichier ce façon est fragile et pourrait être un point de douleur à l'avenir si vos besoins de stockage de fichiers modifier.

L'espoir qui aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top