Rails’link_to’立即下载图像,而不是在浏览器中打开它
我有一个link_to Rails助手,可以在点击时下载壁纸。 但是图像正在浏览器中加载而不是立即下载。
但同时我有一个link_to Rails帮助程序,可以下载.exe格式的屏幕保护程序,但这里的工作方式是:立即下载文件。
我应该添加或执行哪些操作,以便图像不会在浏览器中打开,而是立即下载?
谢谢!
通常,最简单的方法是在发送图像时设置适当的标题:
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'
读这个
Rails 3/4:
在路线:
get "home/download_pdf"
在控制器中:
def download_pdf send_file( "#{Rails.root}/public/your_file.pdf", filename: "your_custom_file_name.pdf", type: "application/pdf" ) end
在视图中:
<%= link_to 'Download PDF', home_download_pdf_url %>
这是使用paperclip的HTML5下载属性的简单解决方案
<%= link_to item.name, item.asset.url, download: item.asset.original_filename %>
- 在rails上使用angularjs和ruby时出现未知的提供程序电子提供程序错误
- 缺少主机链接! 请提供:host参数或设置default_url_options (ActionView :: Template :: Error)
- 在Redmine钩子中更改自定义字段的值
- Rails ActiveRecord – 有没有一种方法可以在没有id的表上执行操作?
- 如何在发送Restful POST / PUT API之前使用rails3.2.x获取CSRF令牌,而没有来自服务器端的任何表单/ UI?
- Capybara电子邮件重置会话
- 在Mac OS X 10.6上卸载Ruby on Rails
- 用rspec测试lib文件夹的正确方法?
- 如何在rails片段上设置/使用ruby并在sublime text 2中自动完成?
- 水印图像用回形针,导轨4
- XMLHttpRequest请求的资源上没有“Access-Control-Allow-Origin”标头