ruby-on-rails - AWS::S3::Errors::InvalidArgument 与 Paperclip PDF 上传

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

我正在尝试将在后台进程中生成的 PDF 上传到 AWS S3。我得到的错误有点神秘,我希望有人遇到过这个问题或者可以引导我朝着正确的方向前进。我在应用程序的其他部分使用回形针,但这些都是在创建 PDF 并在上传之前将其保存到本地临时目录的地方获取表单数据。

相关 gem :

  • rails 3.0.9
  • 回形针 2.7.0
  • aws-sdk 1.3.9

代码:

MyDownload < ActiveRecord::Base
  has_attached_file :download,
    storage: :s3,
    default_style: :original,
    s3_permissions: 'authenticated_read',
    s3_credentials: "#{Rails.root}/config/s3.yml",
    bucket: S3_BUCKET,
    path: ":class/:attachment/:id/:style/:filename",
    s3_protocol: 'https'

  validates_attachment_content_type :download, content_type: [/application\/(x\-)?pdf/i]
  validates_attachment_presence :download

end

在我的后台进程中,我知道 PDF 已生成并且可以在 tmp_path 中查看。这是我正在使用的一些代码:

PDFKit.new(report_content).to_file(tmp_path)
obj = MyDownload.new(date: Date.today)
obj.download = File.new(tmp_path)

obj.valid? # returns true

但是当我这样做时它失败了:

obj.save!

(AWS::S3::Errors::InvalidArgument)
  (eval):3:in `put_object'

最佳答案

原来切换到aws-sdk gem需要s3_permissions选项是一个符号。将 'authenticated_read' 更改为 :authenticated_read 可解决此问题。

关于ruby-on-rails - AWS::S3::Errors::InvalidArgument 与 Paperclip PDF 上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10131595/

相关文章:

ruby-on-rails - Rails - 设计 - 向 Controller 添加 Action

ruby-on-rails - 在谷歌地图上动态显示标记-Rails 3.2

ios - 从 UITextView 创建 PDF

html - Ajaxian HTML 到 PDF 打印控件

pdf - 用 Java Play 显示 PDF! 2 框架

php - 拒绝访问 - 使用预签名 URL 的 S3 资源 - PHP SDK

javascript - 设置 S3 和 Node

ruby-on-rails - 如何让 ActiveRecord 使用 :cast_booleans?

amazon-web-services - 带有签名 URL : 403 Access Denied 的 AWS CloudFront

ruby-on-rails - 适用于 Windows 上 Rails3 的工作 IDE