【问题标题】:Upload Wicked generated PDF to AWS S3 in Rails 5在 Rails 5 中将 Wicked 生成的 PDF 上传到 AWS S3
【发布时间】:2018-01-04 13:03:29
【问题描述】:

我正在生成 PDF 格式的发票,并希望将它们直接上传到 S3。

我正在使用 Wicked-PDF 和官方 AWS 开发工具包。

gem 'wicked_pdf'
gem 'aws-sdk-s3', '~> 1'

现在我创建 PDF:

pdf = render_to_string pdf: "some_file_name", template: "invoices/download", encoding: "UTF-8"

想上传:

s3 = Aws::S3::Resource.new(region: ENV['AWS_REGION'])
obj = s3.bucket('bucket-development').object('Filename')
obj.upload_file(pdf)

我得到的错误:

ArgumentError: string contains null byte

如果我首先将 PDF 存储到定义的路径并使用 save_path 它可以工作:

save_path = Rails.root.join('public','filename.pdf')
File.open(save_path, 'wb') do |file|
 file << pdf
end

但我想将临时 PDF 直接上传到 S3,而不先将 PDF 保存到我的公共文件夹。

【问题讨论】:

    标签: ruby-on-rails amazon-s3 wicked-pdf


    【解决方案1】:

    AWS S3 SDK 中的 upload_file 方法正在处理文件 - see the method's description

    要从内存中上传一个对象,你应该使用put方法-见方法的描述在第二种上传方式on this page

    【讨论】:

      猜你喜欢
      • 2016-03-19
      • 1970-01-01
      • 2021-11-11
      • 1970-01-01
      • 2016-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多