Активное хранилище с Amazon S3 не сохраняется с указанным именем файла, а вместо этого использует ключ файла - PullRequest
0 голосов
/ 01 июня 2018

У меня проблема с Active Storage.Когда я загружаю в Amazon S3, вместо сохранения файла внутри корзины с исходным именем, например myfile.zip, он сохраняет его как key, который связан с этим файлом.Так что в Cyberduck я вижу что-то вроде этого: 5YE1aJQuFYyWNr6BSHxhQ48t.Без какого-либо расширения файла.

Я не уверен, есть ли какая-либо настройка в Rails 5 или она есть внутри Amazon S3, но я потратил часы, пытаясь найти причину этого.

Любые указатели будут очень признательны!

С уважением, Эндрю

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Вы по-прежнему можете ссылаться на имя с помощью метода доступа к имени файла.

class User < ApplicationRecord
  has_one_attached :photo
  ...
end

filename = User.first.photo.filename
0 голосов
/ 01 июня 2018

Это дизайн, от ActiveStorage.Файл сохраняется по ключу и без расширения на S3, но когда URL-адрес создается ActiveStorage, расположение и имя файла устанавливаются .

def url(key, expires_in:, filename:, disposition:, content_type:)
  instrument :url, key: key do |payload|
    generated_url = object_for(key).presigned_url :get, expires_in: expires_in.to_i,
      response_content_disposition: content_disposition_with(type: disposition, filename: filename),
      response_content_type: content_type

    payload[:url] = generated_url

    generated_url
  end

end

* 1007.* Это, вероятно, сделано для того, чтобы избежать проблем с именами файлов, с которыми вы могли бы столкнуться в противном случае.

Подробнее о Content-Disposition заголовках можно прочитать здесь .

...