我正在生成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但我想上传他的临时文件直接到S3,而不是先保存到我的公共文件夹。
发布于 2018-01-04 21:16:37
亚马逊网络服务软件开发工具包中的upload_file方法使用的是S3 - see the method's description。
为了从内存上传对象,您应该使用put方法-请参阅上传on this page的第二种方法中对该方法的描述
https://stackoverflow.com/questions/48095959
复制相似问题