【问题标题】:Creating file dynamically and downloading onto user's computer动态创建文件并下载到用户计算机
【发布时间】:2012-11-01 09:07:43
【问题描述】:

我想知道是否可以在 Rails 中做到这一点:

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

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 file download


    【解决方案1】:

    在控制器中使用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

    【讨论】:

      【解决方案2】:

      是的,这是可能的。这是我的一个应用程序中的内容:

      class DownloadsController < ApplicationController
      
        def download
          # ...
          send_file CSVConstructor::Constructor.new(...).to_zip 
        end
      
      end
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-12
        • 2011-12-19
        • 1970-01-01
        相关资源
        最近更新 更多