Загрузка файла в каталог за пределами RAILS ROOT с помощью Attachment_fu

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

  •  21-09-2019
  •  | 
  •  

Вопрос

Я пытаюсь использовать Attachment_fu для загрузки файлов в каталог за пределами RAILS_ROOT.Я хочу, чтобы файлы сохранялись в ~/APP_NAME/uploads/ чтобы их можно было одобрить/отклонить до того, как они станут общедоступными.Я попробовал следующую конфигурацию для has_attachment:

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

К сожалению, эта конфигурация просто создает ~/APP_NAME/uploads/ структура каталогов в RAILS_ROOT.Любой способ сохранить файл за пределами RAILS_ROOT?

Это было полезно?

Решение 2

Я нашел альтернативный метод, который подходит мне лучше, чем использование относительных имен путей.Я добавил метод под названием full_filename к моему классу прикрепления:

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

Другие советы

Вероятно, это не проблема Attachment-Fu, а скорее то, как Ruby обрабатывает ввод-вывод файлов, а также то, как файлы хранятся в Unix.

Например, если ваше приложение находится, скажем, в ~/Users/ron/APP_NAME.

Если вы измените приведенный выше код:

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

К:

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

Файлы будут храниться в папке «uploads» в ~/Users/ron/uploads.«../» означает один каталог выше текущего корня Rails.Если вы хотите перейти на два каталога вверх, это будет «../../» и так далее.

Но это касается только иерархической навигации.Если вы хотите указать Attachment-Fu хранить файлы в жестко закодированном каталоге вашей файловой системы, вы можете указать ему путь к файлу, например «~/Users/ron/APP_NAME/uploads», но имейте в виду, что путь к файлу жестко закодирован. way хрупкий и может стать проблемой в будущем, если ваши требования к хранению файлов изменятся.

Надеюсь, это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top