Rails 'ссылка на', чтобы загрузить изображение сразу, а не открывать его в браузере
У меня есть помощник link_to Rails, который загружает обои при нажатии. Но изображение загружается в браузере, а не загружается сразу.
<%= link_to "1920x1080", @download.wallpapers[1].wallpaper.url %>
Но в то же время у меня есть помощник link_to Rails, который загружает заставку.формат exe, но здесь он работает как inteded: файл загружается немедленно.
<%= link_to "720p", @download.screensavers.first.screensaver.url %>
Что я должен добавить или сделать, чтобы изображения не открывались в браузере,а сразу загружались?
Спасибо!
5 ответов:
Как правило, самый простой способ сделать это-установить соответствующий заголовок при отправке изображения:
Content-Disposition: attachment; filename=<file name.ext>
Метод send_file позволит вам установить этот заголовок соответствующим образом, если вы обслуживаете файл из файловой системы:
Http://api.rubyonrails.org/classes/ActionController/Streaming.html#method-i-send_file
Если файл хранится в вашей базе данных, вы можете использовать send_data вместо этого:
Http://api.rubyonrails.org/classes/ActionController/Streaming.html#method-i-send_data
Есть более простой способ сделать это с помощью атрибута загрузки HTML5 .
<%= link_to 'Download existing avatar', @user.avatar(:original), download: "User_#{@user.id}_avatar" %>
Вместо того, чтобы помещать ссылку на изображение в свой тег, вы можете обрабатывать его в своем контроллере. И тогда в вашем контроллере вы можете сделать что-то вроде
send_file @download.wallpapers[1].wallpaper.url, :type => 'image/jpeg', :disposition => 'attachment'
Читать это