代码之家  ›  专栏  ›  技术社区  ›  sscirrus

回形针-你如何上传PDF文件?

  •  4
  • sscirrus  · 技术社区  · 14 年前

    我有一个模型可以将图像和PDF文件上传到AmazonS3——图像可以工作,而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?

    编辑

    上传任何图片到:pdf字段工作!关于PDF本身的一些事情似乎把系统搞得一团糟。我的服务器说它已将文件保存到S3,但它们不显示在目录中。

    PDF现在工作 只有标题中没有空格时 . 对于空格,我得到以下错误: Errno::EPIPE: Broken Pipe

    3 回复  |  直到 14 年前
        1
  •  5
  •   Arslan Ali    10 年前

    试试这个

    >> 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
    
        2
  •  1
  •   brg    14 年前

    添加这个 '应用程序/pdf' 给你的 :内容类型 所以它变成了 :content_type=>['image/jpeg'、'image/png'、'image/gif'、'application/pdf'] . 这样可以修复它,如果希望在应用程序中打开它,还可以添加 '应用程序/Octet流' 以及 MSWord/电子表格 ,添加 '应用程序/msword' .

        3
  •  1
  •   Ravindra    13 年前

    要上载PDF文档,您只需执行以下操作:

    在你的模型中,只需输入

    validates_attachment_content_type :uploaded_file, :content_type =>['application/pdf']
    

    这对我很有用,我希望这能帮到你,尽最大的努力。