summaryrefslogtreecommitdiff
path: root/app/uploaders/file_uploader.rb
blob: 0fa987c93f641fdcfaa194833cbc6ca0e8945342 (plain)
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)
    @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