如何使用paperclip上传图像以外的文件...如pdf,docs

时间:2012-05-14 08:51:43

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

我正在使用paperclip在我的applyforjobs上传简历。它工作正常,我的意思是我可以通过浏览按钮上传文件。但是当我显示视图页面时它没有显示我上传的pdf文件,而是显示只是文件的名称。我还检查了默认生成的文件夹,该文件夹包含我在创建活动期间上传的pdfs,这意味着上传的东西工作正常。但我无法显示该pdf。


以下是我的applyforjob.rb模型中的回形针附件中的代码:

has_attached_file :resume,:styles => { :small => "150x150>" }

以下是applyforjobs / form.html.haml的代码,用于上传文件:

= f.label :resume, "Upload resume".html_safe
= f.file_field :resume

以下是applyforjobs / show.html.haml的代码,用于显示文件:

= image_tag @appliedusers.resume.url(:small)

但它没有显示pdf文件。我应该写什么来上传和显示pdf或docs等文件?

2 个答案:

答案 0 :(得分:2)

由于paperclip是一个通用附件上传宝石,如其自述文件中所述,它原生支持上传任何类型的文件。

我建议你:

  1. :styles => { :small => "150x150>" }
  2. 中删除has_attached_file参数
  3. 写一个回形针回调,它将从pdf文件生成缩略图
  4. 在模型中定义一个方法,比如resume_thumbnail,它将返回生成文件的路径
  5. 在您的视图中调用以下内容

    = image_tag @appliedusers.resume_thumbnail
    
  6. 难怪image_tag @appliedusers.resume.url(:small)不适合您:paperclip对PDF一无所知。 paperclip盲目地将PDF文件视为常见的文件,因此无法进行任何适用于图像的处理。

答案 1 :(得分:0)

@,保存pdf后,您需要创建一个图像,将pdf转换为图像以在浏览器上显示  我这样做 -

** self.save ##在paperclip中保存pdf

create_preview_image ##调用此方法

def create_preview_image

file_name = File.join(Rails.root, 'public',   self.document.url.split('?')[0]) if self.document

return unless file_name.present?

pdf = Magick::ImageList.new(file_name) 

return unless pdf.present?

png_file = Tempfile.new(["#{rand(9999).to_s}",'.png'])

pdf[0].write(png_file.path) do

    self.quality = 100

end

self.preview = png_file

self.save

端**