ruby-on-rails - 如何将 Controller 中生成的pdf文件上传到S3存储桶

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

我正在使用 wicked_pdf 生成 pdf 文件并想将其上传到 s3 存储桶,因为 heroku 不公开保存。但面临如何上传到那里或如何在保存路径中提供 s3 存储桶路径的问题。

这是我的 Controller 代码:-

pdf = render_to_string :pdf => "user_detail"

# then save to a file
save_path = Rails.root.join('pdfs','filename.pdf')
File.open(save_path, 'wb') do |file|
  file << pdf
end

最佳答案

除了Anurag Aryan回答你可以使用Aws::S3::Object#put .如果对象是字符串不是磁盘上文件的 IO 对象,这将很有用:

filename = 'filename.pdf'
pdf = render_to_string :pdf => "user_detail"
s3 = Aws::S3::Resource.new(region: ENV['AWS_REGION'])
obj = s3.bucket('your-s3-bucket-name').object(filename)

# upload pdf data as a string
obj.put(body: pdf)

# or as an IO object
save_path = Rails.root.join('pdfs', filename)
File.open(save_path, 'wb') do |file|
  file << pdf
  obj.put(body: file)
end

这里是 an example of file uploading on docs.aws.amazon.com

关于ruby-on-rails - 如何将 Controller 中生成的pdf文件上传到S3存储桶,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49841227/

相关文章:

ruby-on-rails - 时区困惑(1小时)

ruby-on-rails - 需要 Ruby 和 Rails 编码标准的建议

ruby-on-rails - 使用 spree 的全新 Rails 4.0.5 应用程序出错

django - EC2 上的 PostgreSQL 数据库 : Connection refused

ruby-on-rails - 构建从belongs_to关联中提取的属性列表

ruby-on-rails - Rails分页重复项

javascript - 将 javascript 变量转换为 ruby​​ 变量

amazon-web-services - SNS 主题说它需要一个字符串

amazon-web-services - 如何登录亚马逊网络服务(AWS)?

ruby-on-rails - 如何使用 Ruby 从 Active Directory 中检索已删除的对象?