现在使用carrierwave创建多个自定义文件名上传器。 我读了document,并且当上传多个文件时,上传者可以为每个文件名命名。
但是,缩略图文件名与普通文件名不同。
EX)
AAAAAAAAA.jpg
BBBBBBBBB.jpg
thumb_CCCCCCCCC.jpg
thumb_DDDDDDDDD.jpg
我想像下面那样做
EX)
AAAAAAAAA.jpg
BBBBBBBBB.jpg
thumb_AAAAAAAAA.jpg
thumb_BBBBBBBBB.jpg
代码如下。谢谢
class ImageUploader < CarrierWave::Uploader::Base
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :thumb do
process :resize_to_fit => [400, 200]
end
def extension_white_list
%W[jpg jpeg gif png]
end
def filename
"#{secure_token}.#{file.extension}" if original_filename.present?
end
def secure_token
media_original_filenames_var = :"@#{mounted_as}_original_filenames"
unless model.instance_variable_get(media_original_filenames_var)
model.instance_variable_set(media_original_filenames_var, {})
end
unless model.instance_variable_get(media_original_filenames_var).map{|k,v| k }.include? original_filename.to_sym
new_value = model.instance_variable_get(media_original_filenames_var).merge({"#{original_filename}": SecureRandom.uuid})
model.instance_variable_set(media_original_filenames_var, new_value)
end
model.instance_variable_get(media_original_filenames_var)[original_filename.to_sym]
end
end