Где в активном хранилище хранятся файлы (на диске) и как я могу получить их физически? - PullRequest
0 голосов
/ 08 февраля 2019

Я использую активное хранилище с Rails 5.2.Я следую руководству EdgeRails и настроил Active-Storage для использования локального диска.

Загрузка файлов работает отлично, когда я использую приложение Rails.

Однако проблема в том, чтоМне нужно физически получить доступ к этим загруженным файлам без использования Rails в качестве посредника.

Запрос о том, где хранятся файлы, возвращает это:

url_for(@employee_staff.avatar)
=> "/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBGUT09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--e76664d247cb5437fe1cd11f7ee0ded24f95aee2/profilepic3.jpeg"

Я пытаюсь выяснить, где этот файлпуть сохраняется на моем локальном диске.Пока что мне не повезло.

Любые объяснения о том, как работает Active-Storage и где я могу увидеть загруженные файлы, очень приветствуются.

Ответы [ 2 ]

0 голосов
/ 19 июля 2019

Если у вас есть варианты:

variant = @employee_staff
            .avatar
            .attachment
            .variant(resize: '100x100')
            .processed # If variant is not processed

variant.service.send(:path_for, variant.key) # Absolute path to variant file
0 голосов
/ 08 февраля 2019

На вашей локальной машине разработки (поскольку вы упомянули локальный диск) у вас должен быть файл config/storage.yml, который имеет блок, подобный приведенному ниже:

local:
  service: Disk
  root: <%= Rails.root.join('storage') %>

В этом примере выше я сохраняюфайлы в папке с именем storage в корне моего приложения rails.Внутри этой папки вы найдете вложенные папки, которые не предназначены для навигации через проводник / Finder (но вы можете).

Через ваше приложение rails, например, через представления, вы будете использовать помощников по URL , которые еще недостаточно документированы.

С консоли rails вы можете попробовать модель с именем Foo с has_one_attached :photo

Foo.last.photo.blob.key

Это должно дать вам ~ 24 строки символов.

  • Первые 2 символа являются подпапкой внутри папки, на которую я указал выше
  • Следующие 2 символа являются подпапкой внутри этой

Внутриподпапка - это файл с именем, совпадающим с ключом, который вы напечатали выше (без расширения).Это ваш файл.

...