Rails 'link_to' pour télécharger une image immédiatement au lieu de l'ouvrir dans le navigateur
J'ai un link_to Rails helper qui télécharge un fond d'écran lorsque l'utilisateur clique dessus. Mais l'image est en cours de chargement dans le navigateur au lieu d'être téléchargés immédiatement.
<%= link_to "1920x1080", @download.wallpapers[1].wallpaper.url %>
Mais en même temps j'ai un link_to Rails helper qui télécharge un économiseur d'écran .format exe, mais ici, il fonctionne comme inteded: fichier en cours de téléchargement immédiatement.
<%= link_to "720p", @download.screensavers.first.screensaver.url %>
Que dois-je ajouter ou de faire en sorte que les images ne seront pas ouverts dans le navigateur, mais plutôt être téléchargé immédiatement?
Merci!
source d'informationauteur neilmarion
Vous devez vous connecter pour publier un commentaire.
Généralement, la façon la plus propre de faire cela est de définir l'en-tête approprié lors de l'envoi de l'image:
La send_file méthode va vous permettre de mettre cet en-tête de manière appropriée si vous êtes desservant le fichier du système de fichiers:
http://api.rubyonrails.org/classes/ActionController/Streaming.html#method-i-send_file
Si le fichier est stocké dans votre base de données, vous pouvez utiliser send_data à la place:
http://api.rubyonrails.org/classes/ActionController/Streaming.html#method-i-send_data
Il y a un moyen plus facile de faire cela avec la HTML5 télécharger attribut.
Au lieu de mettre le lien de l'image dans votre balise, vous pouvez le manipuler dans votre contrôleur. Et puis dans votre contrôleur, vous pouvez faire quelque chose comme
Lire cette
Rails 3 /4:
dans les itinéraires de:
dans le contrôleur:
en vue:
Voici une solution simple à l'aide de l'HTML5 télécharger attribut avec un trombone,