41 lines
833 B
Ruby
41 lines
833 B
Ruby
# encoding: utf-8
|
|
class FileUploader < CarrierWave::Uploader::Base
|
|
storage :file
|
|
|
|
def initialize(base_dir, path = '', allowed_extensions = nil)
|
|
@base_dir = base_dir
|
|
@path = path
|
|
@allowed_extensions = allowed_extensions
|
|
end
|
|
|
|
def base_dir
|
|
@base_dir
|
|
end
|
|
|
|
def store_dir
|
|
File.join(@base_dir, @path)
|
|
end
|
|
|
|
def cache_dir
|
|
File.join(@base_dir, 'tmp', @path)
|
|
end
|
|
|
|
def extension_white_list
|
|
@allowed_extensions
|
|
end
|
|
|
|
def store!(file)
|
|
@filename = self.class.generate_filename(file)
|
|
super
|
|
end
|
|
|
|
def self.generate_filename(file)
|
|
original_filename = File.basename(file.original_filename, '.*')
|
|
extension = File.extname(file.original_filename)
|
|
new_filename = Digest::MD5.hexdigest(original_filename) + extension
|
|
end
|
|
|
|
def self.generate_dir
|
|
SecureRandom.hex(5)
|
|
end
|
|
end
|