我正在使用'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'))
编辑:这实际上有效!
答案 0 :(得分:0)
现在您可以使用Active Storage,它非常方便,来自核心! https://edgeguides.rubyonrails.org/active_storage_overview.html