ruby-on-rails - 将 Wicked 生成的 PDF 上传到 Rails 5 中的 AWS S3

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

我正在生成 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 保存到我的公共(public)文件夹。

最佳答案

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

要从内存上传对象,您应该使用 put 方法 - 请参阅第二种上传方式中的方法说明 on this page

关于ruby-on-rails - 将 Wicked 生成的 PDF 上传到 Rails 5 中的 AWS S3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48095959/

相关文章:

ruby-on-rails - 从 JSON 嵌套哈希中提取特定字段

jquery - 当我尝试使用 ajax 调用自动保存表单字段时,在 jQuery 中出现错误

java - 如何获取刚刚放入Amazon S3存储桶中的对象的URL?

css - 如何防止由于分页而在 pdf 报告末尾添加空白页

amazon-web-services - wicked pdf 不显示亚马逊 s3 图像

ruby-on-rails - 我的应用程序在 Heroku 上关闭,运行 "heroku run rails test"时没有错误,但运行 "heroku run rails console"时出现许多错误

ruby-on-rails - Rails,Spork和调试器

amazon-web-services - 重新启动AWS Lambda函数以清除缓存

ios - 使用预签名 URL 将文件上传到 AWS S3 的代码有什么问题?

ruby-on-rails - wicked_pdf、wkhtmltopdf 不适用于 Heroku 上的 SVG