forked from gitlabhq/gitlabhq
-
Notifications
You must be signed in to change notification settings - Fork 0
/
file_uploader.rb
41 lines (33 loc) · 820 Bytes
/
file_uploader.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# 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)
original_filename = file.original_filename
file.original_filename = self.class.generate_filename(file) + File.extname(original_filename)
super
original_filename
end
def self.generate_filename(file)
Digest::MD5.hexdigest(File.basename(file.original_filename, '.*'))
end
def self.generate_dir
SecureRandom.hex(5)
end
end