Le téléchargement d'un fichier dans un répertoire en dehors de RACINE RAILS avec attachment_fu
-
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
?
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.