我想知道是否可以在 Rails 中执行此操作:
在网页上有一个链接。当用户点击链接时,控制器会动态生成一个文件(例如,一个包含 1 到 10 之间的单个随机数的文本文件),并将该文件下载到用户的计算机上。该文件可能暂时存储在服务器上,但不应该永久存在。
我想知道是否可以在 Rails 中执行此操作:
在网页上有一个链接。当用户点击链接时,控制器会动态生成一个文件(例如,一个包含 1 到 10 之间的单个随机数的文本文件),并将该文件下载到用户的计算机上。该文件可能暂时存储在服务器上,但不应该永久存在。
send_data
在控制器中使用:
send_data("4", :filename => "my_awesome_file")
如果您已经在服务器上拥有该文件,则可以send_file
改用
send_file(filepath, :filename => "my_awesome_file")
http://api.rubyonrails.org/classes/ActionController/DataStreaming.html#method-i-send_data
是的,这是可能的。这是我在我的一个应用程序中所拥有的:
class DownloadsController < ApplicationController
def download
# ...
send_file CSVConstructor::Constructor.new(...).to_zip
end
end
该download
操作接受从表单提交的参数并将它们发送到自定义类,该类生成一些文件,将它们打包为 zip,并返回文件路径。您必须找出为您自己的应用程序生成文件的最佳方法,但我会推荐类似的方法 - 将功能分支到单独的类中有助于保持控制器轻便。