Class: EducodeSales::UploadFilesController
Instance Method Summary
collapse
#authenticate_admin, #authenticate_request, #current_user, #render_failure, #render_success
Instance Method Details
#create ⇒ Object
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'app/controllers/educode_sales/upload_files_controller.rb', line 22
def create
folder = File.join(Rails.root, "public", "files", 'educode_sales')
upload_file = params["file"]
raise "未上传文件" unless upload_file
save_path = File.join(folder)
ext = file_ext(upload_file.original_filename)
local_path, digest = file_save_to_local(save_path, upload_file.tempfile, ext)
content_type = upload_file.content_type.presence || 'application/octet-stream'
disk_filename = local_path[save_path.size + 1, local_path.size]
@attachment = Attachment.where(disk_filename: disk_filename,
author_id: @current_admin.user_id).first
if @attachment.blank?
@attachment = Attachment.new
@attachment.filename = upload_file.original_filename
@attachment.description = "business"
@attachment.disk_filename = local_path[save_path.size + 1, local_path.size]
@attachment.filesize = upload_file.tempfile.size
@attachment.content_type = content_type
@attachment.digest = digest
@attachment.author_id = @current_admin.user_id
@attachment.container_id = params[:business_id]
@attachment.save!
else
logger.info "文件已存在,id = #{@attachment.id}, filename = #{@attachment.filename}"
end
render_success
end
|
#destroy ⇒ Object
50
51
52
53
54
55
56
|
# File 'app/controllers/educode_sales/upload_files_controller.rb', line 50
def destroy
folder = File.join(Rails.root, "public", "files", 'educode_sales')
file = Attachment.find(params[:id])
file.destroy
File.delete(folder + "/" +file.disk_filename) if FileTest::exist?(folder + "/" +file.disk_filename)
render_success
end
|
#download ⇒ Object
58
59
60
61
62
63
|
# File 'app/controllers/educode_sales/upload_files_controller.rb', line 58
def download
folder = File.join(Rails.root, "public", "files", 'educode_sales')
file = Attachment.find_by_id(params[:id])
raise "未找到文件" unless file
send_file(folder + "/" +file.disk_filename, filename: file.title, stream: true, type: file.content_type.presence || 'application/octet-stream')
end
|
#edu_setting(name) ⇒ Object
65
66
67
|
# File 'app/controllers/educode_sales/upload_files_controller.rb', line 65
def edu_setting name
EduSetting.get(name)
end
|
#file_ext(file_name) ⇒ Object
70
71
72
73
74
75
76
77
|
# File 'app/controllers/educode_sales/upload_files_controller.rb', line 70
def file_ext(file_name)
ext = ''
exts = file_name.split(".")
if exts.size > 1
ext = ".#{exts.last}"
end
ext
end
|
#file_save_to_local(save_path, temp_file, ext) ⇒ Object
79
80
81
82
83
84
85
86
87
88
89
90
|
# File 'app/controllers/educode_sales/upload_files_controller.rb', line 79
def file_save_to_local(save_path, temp_file, ext)
unless Dir.exists?(save_path)
FileUtils.mkdir_p(save_path) end
digest = md5_file(temp_file)
digest = "#{digest}_#{(Time.now.to_f * 1000).to_i}"
local_file_path = File.join(save_path, digest) + ext
save_temp_file(temp_file, local_file_path)
[local_file_path, digest]
end
|
#index ⇒ Object
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
# File 'app/controllers/educode_sales/upload_files_controller.rb', line 6
def index
respond_to do |format|
format.html do
end
format.json do
@files = Attachment.where(description: "business", container_id:params[:business_id])
if params[:sort].present? && params[:sort][:field]
@files = @files.order("#{params[:sort][:field]} #{params[:sort][:order]}")
else
@files = @files.order("created_on desc")
end
@files = @files.page(params[:page]).per(params[:limit])
end
end
end
|
#md5_file(temp_file) ⇒ Object
93
94
95
96
97
98
99
100
|
# File 'app/controllers/educode_sales/upload_files_controller.rb', line 93
def md5_file(temp_file)
md5 = Digest::MD5.new
temp_file.rewind
while (buffer = temp_file.read(8192))
md5.update(buffer)
end
md5.hexdigest
end
|
#save_temp_file(temp_file, save_file_path) ⇒ Object
102
103
104
105
106
107
108
109
|
# File 'app/controllers/educode_sales/upload_files_controller.rb', line 102
def save_temp_file(temp_file, save_file_path)
File.open(save_file_path, 'wb') do |f|
temp_file.rewind
while (buffer = temp_file.read(8192))
f.write(buffer)
end
end
end
|