2012-04-12 74 views
2

我試圖將PDF上傳到在後臺進程中生成的AWS S3。我得到的錯誤有點神祕,我希望有人遇到過這種情況,或者可能能夠帶領我走向正確的方向。我在應用程序的其他部分使用回形針,但是這些表單數據正在創建PDF並在上傳之前將其保存到本地臨時目錄中。AWS :: S3 :: Errors ::使用回形針的InvalidArgument PDF上傳

相關寶石:

  • 的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' 
+0

當我將's3_permissions'改爲':private'時,它可以工作。我不知道這是否是同樣的事情。 – 2012-04-12 21:17:35

回答

8

事實證明,切換到AWS-SDK寶石需要s3_permissions選項是一個象徵。將'authenticated_read'更改爲:authenticated_read可修復此問題。

+0

感謝您的小提示。現在我的頭痛會消失,因爲我可以阻止我的頭靠在牆上。 – memoht 2014-03-16 21:37:36

相關問題