如何从rails应用程序下载文件
我似乎无法在任何地方找到这个问题的简单明了的答案! 一切似乎都已过时或不完整!
我只是希望用户能够点击链接或按钮并下载文件(位于公共文件夹中的某个位置)
我试过这个:
#view :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}" %>
无需特殊的控制器操作。