Ich versuche, ein PDF zu AWS S3, das in einem Hintergrundprozess generiert wird, zu laden. Der Fehler, den ich bekomme, ist ein wenig kryptisch und ich hatte gehofft, dass jemand in diese Sache geraten ist oder vielleicht in der Lage sein könnte, mich in die richtige Richtung zu führen. Ich benutze Büroklammer in anderen Teilen der Anwendung, aber diese nehmen Formulardaten, wo, wie dies ein PDF erstellt und speichert es in einem lokalen Temp-Verzeichnis vor dem Hochladen.AWS :: S3 :: Fehler :: InvalidArgument mit Paperclip PDF Upload
Relevante Edelsteine:
- Rails 3.0.9
- Büroklammer 2.7.0
- aws-sdk 1.3.9
Code:
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
Während meiner Hintergrundprozess Ich weiß, dass das PDF generiert wird und angezeigt werden kann ed bei tmp_path. Hier ist ein wenig von der Code Ich verwende:
PDFKit.new(report_content).to_file(tmp_path)
obj = MyDownload.new(date: Date.today)
obj.download = File.new(tmp_path)
obj.valid? # returns true
aber es funktioniert nicht, wenn ich tun:
obj.save!
(AWS::S3::Errors::InvalidArgument)
(eval):3:in `put_object'
Wenn ich 's3_permissions' in': private' ändere, funktioniert es. Ich habe keine Ahnung, ob das das Gleiche ist. –