通过Rails控制器在SQL数据库中保存.xlsx文件

时间:2018-08-23 16:22:55

标签: ruby-on-rails ruby xlsx axlsx

我正在使用'axlsx_rails'gem创建一个.xlsx文件。我可以成功使用以下方法将文件保存到浏览器:

send_data(xlsx.to_stream.read, type: "application/xlsx", filename: filename)

但是-我希望能够在用户下载文件的同时将其保存在数据库中,以便以后可以访问该文件。

我不知道该怎么做-另存为xlsx.to_stream.read不起作用,其他变体只给了我字符串-我想将其另存为实际的.xlsx文件。

我该怎么做?

编辑:

这是我目前拥有的:

class ReportsUploader < CarrierWave::Uploader::Base
  def store_dir
     "reports"
  end
end

然后在模型中:

class Report < ApplicationRecord

  mount_uploader :file, ReportsUploader
end

然后,当我保存实际报告时:

send_data(report.xlsx.to_stream.read, type: "application/xlsx", filename: report.filename)

这会导致用户下载文件

然后我做

Report.create!(file: Rails.root.join('user_information_report.xlsx'))

编辑:这实际上有效!

1 个答案:

答案 0 :(得分:0)

现在您可以使用Active Storage,它非常方便,来自核心! https://edgeguides.rubyonrails.org/active_storage_overview.html