Скачать файл по клику - Ruby on Rails - PullRequest
6 голосов
/ 27 января 2011

Мое приложение использует бэкэнд Rails 2, Heroku для хостинга, Paperclip для загрузки файлов и Amazon S3 для хранения файлов.

Сейчас пользователи могут загружать файлы с помощью paperclip + s3 - это работает безупречно.После загрузки на их панели появляется значок, связанный с расположением файла (в корзине s3).При нажатии на значок браузер открывает файл в новом окне (для большинства типов файлов - PDF, MP3, img и т. Д.).Вместо открытия я хочу, чтобы файл автоматически загружался, когда пользователь щелкает значок файла (например, вложения Gmail).Решение должно быть в состоянии работать с любым типом файлов и кросс-браузером.

Есть ли помощник для этого в rails, или необходим javascript?Я действительно застрял на этом, поэтому все, что укажет мне правильное направление, будет с благодарностью.Спасибо!

Ответы [ 2 ]

10 голосов
/ 27 января 2011

Пожалуйста, попробуйте следующее:

class Test < ActiveRecord::Base

  has_attached_file :testfile, 
    :storage => :s3,
    # All your S3 config
    :s3_headers => {"Content-Disposition" => "attachment"}

end

Это должно сказать Gem Paperclip для установки заголовка «Content-Disposition» для значения «attachment» для вновь загружаемых файлов.

Примечаниенеобходимо вручную отредактировать уже загруженный файл, например, с помощью Cyberduck или другого FTP-клиента.

2 голосов
/ 27 января 2011

При передаче файла необходимо установить заголовок Content-Disposition со значением attachment; filename=yourfilename.pdf.Если он передан непосредственно из S3, вам нужно указать S3 также установить заголовки Content-Disposition.Возможно также Content-Type.

Обратите внимание, что если вы скажете S3 связать заголовок Content-Disposition, он будет всегда передавать этот заголовок.

FWIW, вот документация Amazonпри выполнении PUT для объекта: http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectPUT.html

...