rails link_to link how _blank ruby-on-rails image download link-to

ruby-on-rails - how - link_to edit



Rails ''link_to'' para descargar una imagen inmediatamente en lugar de abrirla en el navegador (5)

Tengo un link_to Rails helper que descarga un fondo de pantalla cuando se hace clic. Pero la imagen se está cargando en el navegador en lugar de descargarse inmediatamente.

<%= link_to "1920x1080", @download.wallpapers[1].wallpaper.url %>

Pero al mismo tiempo, tengo un enlace para el asistente de Rails que descarga un protector de pantalla en formato .exe, pero aquí funciona como un archivo intacto: el archivo se descarga de inmediato.

<%= link_to "720p", @download.screensavers.first.screensaver.url %>

¿Qué debo agregar o hacer para que las imágenes no se abran en el navegador, sino que se descarguen de inmediato?

¡Gracias!


Aquí hay una solución simple utilizando el atributo de descarga HTML5 con un clip

<%= link_to item.name, item.asset.url, download: item.asset.original_filename %>


En general, la forma más limpia de hacerlo es establecer el encabezado apropiado al enviar la imagen:

Content-Disposition: attachment; filename=&lt;file name.ext&gt;

El método send_file le permitirá configurar este encabezado adecuadamente si está sirviendo el archivo desde el sistema de archivos:

http://api.rubyonrails.org/classes/ActionController/Streaming.html#method-i-send_file

Si el archivo está almacenado en su base de datos, puede usar send_data en su lugar:

http://api.rubyonrails.org/classes/ActionController/Streaming.html#method-i-send_data



Hay una forma más fácil de hacer esto con el atributo de descarga HTML5 .

<%= link_to ''Download existing avatar'', @user.avatar(:original), download: "User_#{@user.id}_avatar" %>


Rieles 3/4:

en rutas:

get "home/download_pdf"

en el controlador:

def download_pdf send_file( "#{Rails.root}/public/your_file.pdf", filename: "your_custom_file_name.pdf", type: "application/pdf" ) end

en vista:

<%= link_to ''Download PDF'', home_download_pdf_url %>