Ruby on Rails中如何强制用户下载tmp目录下的文件?

2026-04-11 18:421阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计321个文字,预计阅读时间需要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目录中创建我想要的文件,我想要做的就是强制用户下载该文件.

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

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

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

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

附:
如果我把…

redirect_to file_path

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

干杯.

Ruby on Rails中如何强制用户下载tmp目录下的文件?

看看 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'

本文共计321个文字,预计阅读时间需要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目录中创建我想要的文件,我想要做的就是强制用户下载该文件.

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

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

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

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

附:
如果我把…

redirect_to file_path

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

干杯.

Ruby on Rails中如何强制用户下载tmp目录下的文件?

看看 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'