将由Wicked生成的PDF上传到Rails 5中的AWS S3

3
我正在生成PDF发票,并希望直接将它们上传到S3。
我正在使用Wicked-PDF和官方AWS SDK。
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 保存到我的公共文件夹中。

1个回答

3

AWS S3 SDK中的upload_file方法用于处理文件 - 查看该方法的描述

要从内存中上传对象,应使用put方法 - 在此页面上的第二种上传方式中查看该方法的描述。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接