【发布时间】:2017-11-16 04:37:40
【问题描述】:
看起来现在每个浏览器都支持HTML5 download attribute,我想知道使用它而不是创建链接并在带有 Rails 的控制器中使用send_file 是否有任何优点/缺点。
【问题讨论】:
标签: ruby-on-rails ruby html cross-browser
看起来现在每个浏览器都支持HTML5 download attribute,我想知道使用它而不是创建链接并在带有 Rails 的控制器中使用send_file 是否有任何优点/缺点。
【问题讨论】:
标签: ruby-on-rails ruby html cross-browser
send_file 更通用,更高效。
它的主要优点是它使用X-Sendfile 响应头。这样做是将文件的流式处理从 Ruby 卸载到针对高吞吐量内容交付进行了优化的服务器(例如 Nginx 或 Apache)。
简单的“下载”链接会保存目标,无论目标上显示什么。例如,如果目标受会话保护,并且会话在您单击链接之前到期,这可能会出现问题。您最终会在不知情的情况下保存登录页面。使用send_file,如果会话正常,您可以动态启动下载,否则重定向到登录页面。
send_file 还允许您动态指定一个有意义的文件名,因此如果您的链接指向 /users/42,您可以将下载名称设置为“John Smith.csv”而不是神秘的“42 ”。
【讨论】: