Задать Content-Disposition для AWS S3 с помощью Rails?
Я использую Amazon S3 для хранения и обслуживания пользовательского контента для учетных записей пользователей. Мне нужна возможность обслуживать файлы как встроенные (иногда ссылки на изображения будут в сообщениях блога и т. Д.), Так и для загрузки. По умолчанию при загрузке файла в мое хранилище S3 файл не имеет установленного Content-Disposition (это хорошо, потому что он будет работать на сервере, пока браузер распознает файл MIME), однако иногда мне нужно будет установить Content- Распоряжение вложением для загрузки файла.
С помощью Rails/S3 gem можно ли отправить запрос в Amazon, чтобы указать, что файл должен быть отправлен с Content-Disposition установленным на attachment (или наоборот) только для этого запроса? Возможно, он мог бы использовать какой-то токен (в отношении токена для запроса, обычно используемого для аутентифицированных чтений... просто интересно, может ли это помочь мне и в этой ситуации)? Используя драгоценный камень S3, я знаю, как установить и сохранить расположение содержимого для каждого файла, но это приведет к тому, что файл будет всегда загружаться и не сможет использоваться в качестве встроенного изображения (не проверено).
Если не считать двух файлов (один с набором Content-Disposition='download' и без него), есть идеи? Заранее спасибо.
PS Я использую rails Rails 2, attachment_fu и гем aws-s3 (я не могу изменить их, потому что вышеупомянутое приложение является частью гораздо большего, уже запущенного приложения, и я знаю, что существуют конфликты между aws-s3 и aws_right gem)
2 ответа
На всякий случай, если кто-нибудь наткнется на этот старый пост, API-интерфейс Amazon теперь позволяет изменять расположение содержимого для файлов, хранящихся на S3. Прочитайте объявление здесь.
Я полагаю, что Content-Disposition устанавливается при загрузке, поэтому, если вам не нужны две копии файла, каждая со своим собственным Content-Disposition, одним из способов будет потоковая передача его из контроллера с помощью send_file http://api.rubyonrails.org/classes/ActionController/Streaming.html