我正在使用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等文件?
答案 0 :(得分:2)
由于paperclip
是一个通用附件上传宝石,如其自述文件中所述,它原生支持上传任何类型的文件。
我建议你:
:styles => { :small => "150x150>" }
has_attached_file
参数
resume_thumbnail
,它将返回生成文件的路径在您的视图中调用以下内容
= image_tag @appliedusers.resume_thumbnail
难怪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
端**