【问题标题】:how to read a file from blob and save it to public folder in rails如何从blob读取文件并将其保存到rails中的公用文件夹
【发布时间】:2021-07-03 06:49:42
【问题描述】:

我正在从 blob 读取 pdf 文件并将其保存到本地文件夹

    @doc = Document.find(params[:id])
    blob = @doc.docs.first.blob
    
    ActiveStorage::Downloader.new(blob.service).open(blob.key, checksum: blob.checksum) do |tempFile|
        
        temppdf = Tempfile.new ["mypdf", ".pdf"]
        pathpdf = "app/assets/images/" + current_account.email+'.pdf'
        tempFile.save(pathpdf)

    end

【问题讨论】:

  • 您的问题是什么?您的代码是否返回意外结果?还是有错误?错误信息是什么?
  • 错误:NoMethodError(# 的未定义方法“保存”)
  • 感谢我已修复

标签: ruby-on-rails ruby


【解决方案1】:

您可以使用ActiveStorage::Blob#open 将文件直接steam 到磁盘绕过临时文件:

@doc = Document.find(params[:id])
blob = @doc.docs.first.blob
# app/assets certainly isn't a public path...
fn = Rails.root.join('public', 'uploads', 'mypdf.pdf')

File.open(fn, "wb+") do |file| 
  blob.download { |chunk| file.write(chunk) }
end

【讨论】:

  • 具有讽刺意味的是,这正是 ActiveStorage::Downloading 所做的,但它被贬低了。真的应该有一个方法......
  • 谢谢我已经修好了
  • 如果答案解决了您的问题,您应该点击复选标记接受它。
猜你喜欢
  • 2018-09-30
  • 1970-01-01
  • 2020-02-28
  • 2020-03-16
  • 1970-01-01
  • 1970-01-01
  • 2018-01-17
  • 2013-03-02
  • 2014-02-26
相关资源
最近更新 更多