回形针 - 如何上传PDF?

时间:2010-11-02 08:39:10

标签: ruby-on-rails ruby-on-rails-3 amazon-s3 paperclip

我有一个模型可以将图像和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
  1. 为什么不上传简历(图片可以!)
  2. 如何验证:pdf字段只允许.pdf,.doc,.docx,.txt?
  3. 修改

    将任何图片上传到:pdf字段有效!关于pdfs本身的一些东西似乎搞乱了系统。我的服务器说它已将文件保存到S3但它们没有出现在目录中。

    PDF只有在标题中没有空格时才能正常工作。对于空格,我收到以下错误:Errno::EPIPE: Broken Pipe

3 个答案:

答案 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。