Rails如何不通过控制器提供文件下载?
Posted
技术标签:
【中文标题】Rails如何不通过控制器提供文件下载?【英文标题】:Rails how to provide file download not through controller? 【发布时间】:2012-01-11 17:04:04 【问题描述】:我想列出本地文件夹中文件的文件下载链接
当我使用这个 <a href="/home/tmpfile.txt">download_link</a>
它抱怨
没有路由匹配 [GET] "/home/tmpfile.txt"
和
也得到
没有路由匹配 [GET] "/home/tmpfile.txt"
添加get "/home/tmpfile.txt" 到config/route.rb 不能解决问题
我不想在控制器中使用 send_file 函数,因为我有很多文件 我正在寻找这样的东西ftp://ftp.ncbi.nih.gov/pub/mmdb/cdd/
有人有简单的解决方案吗?
【问题讨论】:
【参考方案1】:/home/tmpfile.txt
是您的文件系统中的路径还是服务器虚拟文件系统中的路径?
如果它是文件系统中的路径,您需要将其移动到 public
文件夹,尽管它在网络服务器根目录中可用!
【讨论】:
我将文件移至公用文件夹,现在可以使用了。谢谢!有什么方法可以链接到系统路径而不是将文件放在公用文件夹中? 但是rails没有我上面给出的链接的默认文件夹树视图吗? public 是公共文件的 Rails 服务器的默认根目录! 当我点击下载链接时,它会在新窗口中打开文件,而不是弹出下载对话框。如何让它保存文件而不是打开它? 这是因为浏览器可以解释 .txt 文件。当您希望将其作为下载推送到客户端时,您必须使用 send_file!以上是关于Rails如何不通过控制器提供文件下载?的主要内容,如果未能解决你的问题,请参考以下文章
通过 Rails 2.3 使用 x-sendfile 通过 Nginx 提供大文件