我一直在努力开发一个网站,允许上传各种类型的文件,包括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
到目前为止,该网站将允许上传到所有白名单文件类型的服务器,除了pdfs之外的所有内容都会实际显示。然而,Pdfs只会显示破碎的图像而不是该pdf的图像。我该怎么做才能解决这个问题?