我有一个模型可以将图像和pdf上传到Amazon S3 - 图像工作,pdf没有。
这就是我的模型:
validates_attachment_content_type :photo, :content_type => ['image/jpeg', 'image/png', 'image/gif']
has_attached_file :pdf,
:storage => :s3,
:s3_credentials => "#{::Rails.root.to_s}/config/s3.yml",
:path => "/userpdfs/:id/:basename.:extension"
has_attached_file :photo,
:styles => {:medium => "200x300>", :thumb => "100x150>" },
:storage => :s3,
:s3_credentials => "#{::Rails.root.to_s}/config/s3.yml",
:path => "/userphotos/:style/:id/:basename.:extension"
亚马逊正在展示userphotos
,但没有userpdfs
。这两种类型在我的数据库中都有四个字段:
pdf_name
pdf_type # could also be a word doc
pdf_size
pdf_updated_at
将任何图片上传到:pdf字段有效!关于pdfs本身的一些东西似乎搞乱了系统。我的服务器说它已将文件保存到S3但它们没有出现在目录中。
PDF只有在标题中没有空格时才能正常工作。对于空格,我收到以下错误:Errno::EPIPE: Broken Pipe
。
答案 0 :(得分:5)
试试这个
>> Attachment.last.file_path
=> "https://s3.amazonaws.com/content.dynamixccw.com/attachments/4/Financial goal Report.pdf"
>> url = _
=> "https://s3.amazonaws.com/content.dynamixccw.com/attachments/4/Financial goal Report.pdf"
>> url.gsub(' ', '%20')
=> "https://s3.amazonaws.com/content.dynamixccw.com/attachments/4/Financial%20goal%20Report.pdf"
要验证,请将其抛入
validates_attachment_content_type :pdf, :content_type => ['application/pdf', 'application/msword', 'text/plain'], :if => :pdf_attached?
def pdf_attached?
self.pdf.file?
end
答案 1 :(得分:1)
将此'application / pdf'添加到您的:content_type ,因此它变为:content_type => ['image / jpeg','image / png','image / gif','application / pdf'] 。这应该修复它,如果你想在应用程序中打开它,那么还要添加'application / octet-stream',对于 MSword /电子表格,添加'应用程序/ MSWORD“即可。
答案 2 :(得分:1)
要上传pdf文档,您只需执行以下操作:
在你的模型中输入
validates_attachment_content_type :uploaded_file, :content_type =>['application/pdf']
这对我有用,我希望这对你有所帮助,All The Best。