将字符串写入文件以供下载 Ruby on Rails

Posted

技术标签:

【中文标题】将字符串写入文件以供下载 Ruby on Rails【英文标题】:Writing string to file for download Ruby on Rails 【发布时间】:2022-01-12 18:13:31 【问题描述】:

我正在构建一个进行大量 API 调用的应用程序。我希望能够将每个 API 调用的输出写入文件,然后能够下载该文件。到目前为止,这是我的控制器的样子:

def show
   @resp = Faraday.get("https://my_api_endpoint")
end 

如何将字符串写入文件并使用 Ruby on Rails 下载该文件?

【问题讨论】:

响应有多大?您只想下载响应一次还是多次?您是否需要确保以后只允许请求 API 请求的用户下载文件?您的服务器设置如何,您是否能够将文件存储在本地文件系统中,还是需要将其存储在其他位置(例如 S3 等) 【参考方案1】:

你的问题太模糊了。

您可以这样写入文件:

File.write(Rails.root.join("PATH_TO_FILE.txt"), @resp.to_s, mode: "a")

但是您应该将文件附加到您的模型以便以后能够检索它,例如

has_one_attached :response_txt

【讨论】:

以上是关于将字符串写入文件以供下载 Ruby on Rails的主要内容,如果未能解决你的问题,请参考以下文章

冻结 Ruby on Rails 时无法写入锁定文件

Ruby on rails - 压缩和下载pdf文件

Ruby on Rails 上的免费融合图表

Base64 编码的字符串到文件(Ruby on Rails) - 未定义的方法“解包”错误

/usr/bin/env ruby​​ 没有这样的文件或目录:使用 capistrano 3、capistrano/rbenv、capistrano/bundler 和 capistrano/rail

如何在 Ruby on Rails 中裁剪图像