【发布时间】:2018-04-10 10:03:13
【问题描述】:
我一直在尝试开发一个网站,该网站允许上传各种类型的文档,包括 pdf。以下是我的上传者:
class PictureUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :jpg do
process :convert_to_images
process :set_content_type_jpg
def convert_to_images(*args)
image = MiniMagick::Image.open(current_path)
image.pages.each_with_index do |page, index|
MiniMagick::Tool::Convert.new do |convert|
convert.background 'white'
convert.flatten
convert.density 300
convert.quality 95
convert << page.path
convert << "#{CarrierWave.root}/#{store_dir}/image-#{index}.jpg"
end
end
end
end
def set_content_type_jpg(*args)
self.file.instance_variable_set(:@content_type, "image/jpg")
end
def extension_whitelist
%w(jpg jpeg gif png pdf)
end
end
到目前为止,该站点将允许将所有列入白名单的文件类型上传到服务器,并且实际上会显示除 pdf 之外的所有文件。但是,Pdfs 只会显示损坏的图像,而不是该 pdf 的图像。我能做些什么来解决这个问题?
【问题讨论】:
-
您查看过 [链接] (github.com/minimagick/minimagick/issues/288) 吗?也许检查一下文件类型,然后在链接页面上尝试 janko-m 建议的代码
标签: ruby-on-rails pdf carrierwave minimagick