在我的rails 4应用程序中,我使用carrierwave将文件上传到谷歌云存储。我能够成功上传图像文件,但pdfs不能正常工作。它显示以下错误:
您不能上传“pdf”文件,允许的类型:jpg,jpeg,gif,png
这是我的上传者: -
# encoding: utf-8
require 'carrierwave/processing/mime_types'
class AttachmentUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
include CarrierWave::MimeTypes
storage :fog
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
process :set_content_type
def extension_white_list
%w(jpg jpeg gif png pdf)
end
end
我不知道这段代码有什么问题。
这是附件模型
class Attachment < ActiveRecord::Base
mount_uploader :attachment, AttachmentUploader
# Associations
belongs_to :attached_item, polymorphic: true
# Validations
validates_presence_of :attachment
validates_integrity_of :attachment
# Callbacks
before_save :update_attachment_attributes
# Delegate
delegate :url, :size, :path, to: :attachment
# Virtual attributes
alias_attribute :filename, :original_filename
private
def update_attachment_attributes
if attachment.present? && attachment_changed?
self.original_filename = attachment.file.original_filename
self.content_type = attachment.file.content_type
end
end
end
更新: 在本地计算机上进行测试时,它可以正常运行在开发环境中它没有问题,我可以检查上传到谷歌存储的文件。但是在heroku上显示错误“你不允许上传”pdf“文件,允许的类型:jpg,jpeg,gif,png”
更新: 我的应用中还有另一个上传器,ImageUploader。当我将其extension_white_list设置为包含pdf时,它也使attachment_uploader工作。怎么样?我需要在所有上传者中使用相同的extension_white_list吗?
提前致谢!