ruby-on-rails – 如何从rails应用程序下载文件

我似乎无法在任何地方找到一个简单明了的问题回答这个问题!一切似乎过时或不完整!

我只是希望用户能够点击链接或按钮并下载文件(这是公共文件夹中的某个地方)

我试过这个:

#view
<%= link_to "Raw blast output" ,:action => :download, :file_name => "public/data/02_blastout/#{@bl_file}" %>
#controller
def download
    send_file "#{RAILS_ROOT}/#{params[:file_name]}"
end

但是我收到这个错误:

No route matches {:action=>"download", :file_name=>"public/data/02_blastout/input0.fa_x_Glyma1aaunq.bl", :controller=>"cvits"}

谢谢您的帮助!!

不要使用send_file与用户设置的参数。这打开了一个巨大的安全漏洞,允许用户访问您的应用程序可读的任何文件(即整个应用程序,也可能是文件系统上的其他文件)。

相反,如果文件是公开的,请链接到文件本身。在你的情况下

<%= link_to "Raw blast output", "/data/02_blastout/#{@bl_file}" %>

不需要特殊的控制器动作。

翻译自:https://stackoverflow.com/questions/6392003/how-to-download-a-file-from-rails-application

转载注明原文:ruby-on-rails – 如何从rails应用程序下载文件