Задать расположение содержимого для AWS S3 с Rails? - PullRequest
2 голосов
/ 28 декабря 2010

Я использую Amazon S3 для хранения и обслуживания пользовательского контента для учетных записей пользователей. Мне нужна возможность обслуживать файлы как встроенные (иногда ссылки на изображения будут в сообщениях блога и т. Д.), Так и для загрузки. По умолчанию при загрузке файла в мое хранилище S3 файл не имеет установленного Content-Disposition (это хорошо, потому что он будет работать на сервере, пока браузер распознает файл MIME), однако иногда мне нужно будет установить Content- Распоряжение вложением для загрузки файла.

Используя гем Rails / S3, можно ли отправить запрос в Amazon, чтобы указать, что файл должен быть отправлен с Content-Disposition, установленной на attachment (или наоборот) только для этого запроса? Возможно, он мог бы использовать какой-то токен (в отношении токена для запроса, обычно используемого для аутентифицированных операций чтения ... просто интересно, может ли это помочь мне и в этой ситуации)? Используя гем S3, я знаю, как установить и сохранить расположение содержимого для каждого файла, но это приведет к тому, что файл будет всегда загружаться и не сможет использоваться в качестве встроенного изображения (не проверено).

Если не считать двух файлов (один с и без Content-Disposition = 'download' set), есть идеи? Заранее спасибо.

PS Я использую rails Rails 2, attachment_fu и гем aws-s3 (я не могу изменить их, потому что вышеупомянутое приложение является частью гораздо большего, уже запущенного приложения, и я знаю, что существуют конфликты между aws-s3 и aws_right gem)

Ответы [ 2 ]

2 голосов
/ 11 мая 2012

На всякий случай, если кто-нибудь наткнется на этот старый пост, API Amazon теперь позволяет изменять Content-Disposition для файлов, хранящихся на S3. Прочитайте объявление здесь.

1 голос
/ 09 февраля 2011

Я полагаю, что Content-Disposition устанавливается при загрузке, поэтому, если вам не нужны две копии файла, каждая со своим собственным Content-Disposition, одним из способов будет потоковая передача его из контроллера с помощью send_file http://api.rubyonrails.org/classes/ActionController/Streaming.html#method-i-send_file

...