gpt4 book ai didi

ruby-on-rails - 如何在Rails应用程序中发送动态生成的文件

转载 作者:行者123 更新时间:2023-12-03 16:12:43 25 4
gpt4 key购买 nike

我正在尝试在Rails应用程序中提供动态生成的文件,因此,当用户单击特定链接时,将使用send_data生成文件并将其发送到客户端。

该文件不打算被重用:这是一个短文本文件,并且重新生成应该确实便宜,因为它不会被大量下载。但是如果有必要或方便的话,我可以将其存储在数据库中,因此只生成一次。

首先,我想在内存中生成文件,然后在 Controller 中发送它。我正在尝试归档如下内容:

def DownloadsController < ApplicationController
def project_file
project = Project.find(params[:id])
send_data project.generate_really_simply_text_file_report
end
end

但我不知道如何在内存中生成流,因此在文件系统中未创建任何文件。

另一个选择是在rails app tmp目录中生成一个具有随机名称的文件,然后从ther发送该文件,但是随后该文件将保留在该文件中,这是我不希望发生的事情。

编辑:如果我没记错的话,send_file会阻止请愿书,直到发送文件为止,这样它就可以工作了...

还有其他建议或意见吗?

提前致谢

最佳答案

如果您所描述的是一个简单的问题,则可以使用类似的简单解决方案。只是不要忘记:filename选项,否则文件将被命名为“project_file”。

  def project_file
project = Project.find(params[:id])
send_data project.generate_really_simply_text_file_report, :filename => "#{project.name}.txt"
end

编辑:

您的 project#generate_really_simply_text_file_report应该返回二进制数据,文件路径或原始String。
  def download
content = "chunky bacon\r\nis awesome"
send_data content, :filename => "bacon.txt"
end

关于ruby-on-rails - 如何在Rails应用程序中发送动态生成的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2199273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com