当前位置 : 主页 > 编程语言 > ruby >

ruby-on-rails – Ruby on rails,强制用户下载tmp文件

来源:互联网 收集:自由互联 发布时间:2021-06-23
我在tmp目录中创建了一个文件,其中包含以下控制器代码: def download file_path = "#{RAILS_ROOT}/tmp/downloads/xxx.html" data = render_to_string( :action = :show, :layout = nil ) File.open(file_path, "w"){|f| f data } fl
我在tmp目录中创建了一个文件,其中包含以下控制器代码:

def download
    file_path = "#{RAILS_ROOT}/tmp/downloads/xxx.html"
    data = render_to_string( :action => :show, :layout => nil )
    File.open(file_path, "w"){|f| f << data }
    flash[:notice] = "saved to #{file_path}"
  end

这会在tmp目录中创建我想要的文件,我想要做的就是强制用户下载该文件.

在我的本地计算机上,文件保存到以下路径:

/Users/xxxx/Documents/Sites/xxxx/Website/htdocs/tmp/downloads/xxxx.html

在实时服务器上,这个网址将是完全不同的东西.

我想知道的是如何强迫用户下载这个xxxx.html?

附:
如果我把…

redirect_to file_path

…在控制器上它只是给我一条未找到的路线.

干杯.

看看 send_file方法.它看起来像这样:

send_file Rails.root.join('tmp', 'downloads', 'xxxxx.html'), :type => 'text/html', :disposition => 'attachment'

:disposition => ‘attachment’将强制浏览器下载文件而不是渲染文件.如果要在浏览器中加载,请将其设置为“内联”.如果nginx在你的Rails应用程序前面,那么你将不得不修改你的环境配置(即.environment / production.rb):

# For nginx:
config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect'
网友评论