Ruby on Rails 中如何强制用户下载特定tmp文件?

更新于
2026-10-09 22:35:07
2阅读来源:SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计320个文字,预计阅读时间需要2分钟。

Ruby on Rails 中如何强制用户下载特定tmp文件?

在tmp目录下创建了一个文件,其中包含以下控制台代码:pythondef download_file(file_path):

我在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目录中创建我想要的文件,我想要做的就是强制用户下载该文件.

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

Ruby on Rails 中如何强制用户下载特定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'

本文共计320个文字,预计阅读时间需要2分钟。

Ruby on Rails 中如何强制用户下载特定tmp文件?

在tmp目录下创建了一个文件,其中包含以下控制台代码:pythondef download_file(file_path):

我在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目录中创建我想要的文件,我想要做的就是强制用户下载该文件.

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

Ruby on Rails 中如何强制用户下载特定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'