5

我想知道是否可以在 Rails 中执行此操作:

在网页上有一个链接。当用户点击链接时,控制器会动态生成一个文件(例如,一个包含 1 到 10 之间的单个随机数的文本文件),并将该文件下载到用户的计算机上。该文件可能暂时存储在服务器上,但不应该永久存在。

4

2 回答 2

7

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

于 2012-11-01T01:03:57.553 回答
3

是的,这是可能的。这是我在我的一个应用程序中所拥有的:

class DownloadsController < ApplicationController

  def download
    # ...
    send_file CSVConstructor::Constructor.new(...).to_zip 
  end

end

download操作接受从表单提交的参数并将它们发送到自定义类,该类生成一些文件,将它们打包为 zip,并返回文件路径。您必须找出为您自己的应用程序生成文件的最佳方法,但我会推荐类似的方法 - 将功能分支到单独的类中有助于保持控制器轻便。

于 2012-11-01T01:07:43.643 回答