修复作业打包下载无法下载的BUG
This commit is contained in:
parent
5d9f54c93b
commit
ecd5a7b2fb
|
@ -19,17 +19,13 @@ class ZipdownController < ApplicationController
|
|||
end
|
||||
|
||||
def assort
|
||||
obj_class = params[:obj_class]
|
||||
obj_id = params[:obj_id]
|
||||
obj = obj_class.constantize.find(obj_id)
|
||||
zipfile = nil
|
||||
case obj.class.to_s.to_sym
|
||||
when :Bid
|
||||
zipfile = zip_bid obj
|
||||
else
|
||||
logger.error "[ZipDown#assort] ===> #{obj.class.to_s.to_sym} unKown !!"
|
||||
if params[:obj_class] == "Bid"
|
||||
bid = Bid.find params[:obj_id]
|
||||
zipfile = zip_bid bid
|
||||
else
|
||||
logger.error "[ZipDown#assort] ===> #{params[:obj_class]} unKown !!"
|
||||
end
|
||||
send_file zipfile, :filename => obj.name+".zip", :type => detect_content_type(zipfile) if zipfile
|
||||
send_file zipfile, :filename => bid.name + ".zip", :type => detect_content_type(zipfile) if zipfile
|
||||
|
||||
rescue Exception => e
|
||||
render file: 'public/no_file_found.html'
|
||||
|
@ -40,61 +36,43 @@ class ZipdownController < ApplicationController
|
|||
homework = HomeworkAttach.find params[:homework]
|
||||
if User.current.admin? || User.current.member_of_course?(homework.bid.courses.first)
|
||||
if homework != nil
|
||||
if homework.attachments.count > 0
|
||||
unless homework.attachments.empty?
|
||||
zipfile = zip_homework_by_user homework
|
||||
send_file zipfile, :filename => homework.name+".zip", :type => detect_content_type(zipfile) if(zipfile)
|
||||
else
|
||||
render file: 'public/no_file_found.html' , :layout => 'course_base'
|
||||
render file: 'public/no_file_found.html'
|
||||
end
|
||||
else
|
||||
render file: 'public/file_not_found.html' , :layout => 'course_base'
|
||||
render file: 'public/file_not_found.html'
|
||||
end
|
||||
else
|
||||
render_403 :message => :notice_not_authorized ,:layout => "course_base"
|
||||
render_403
|
||||
end
|
||||
rescue => e
|
||||
render file: 'public/file_not_found.html' , :layout => 'course_base'
|
||||
render file: 'public/file_not_found.html'
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def zip_user_bid(bid,user_id)
|
||||
# Todo: User Access Controll
|
||||
|
||||
homeattaches = bid.homeworks.where("user_id = ?",user_id)
|
||||
# 得到每一个人所有文件打包的zip文件
|
||||
# 并将每一个人的zip打包为一个并返回路径
|
||||
user_zip_paths = homeattaches.map do |homeattach|
|
||||
zip_homework_by_user homeattach
|
||||
end
|
||||
user_zip_paths
|
||||
end
|
||||
|
||||
def zip_bid(bid)
|
||||
# Todo: User Access Controll
|
||||
|
||||
homeattaches = bid.homeworks
|
||||
#记录所有作业是不是有附件,有一个附件就改为true
|
||||
#has_file = false
|
||||
# 得到每一个人所有文件打包的zip文件
|
||||
# 并将每一个人的zip打包为一个并返回路径
|
||||
user_zip_paths = homeattaches.map do |homeattach|
|
||||
if homeattach.attachments.count > 0
|
||||
zip_homework_by_user homeattach
|
||||
#has_file = true unless has_file
|
||||
bid_homework_path = []
|
||||
bid.homeworks.each do |homeattach|
|
||||
unless homeattach.attachments.empty?
|
||||
bid_homework_path << zip_homework_by_user(homeattach)
|
||||
end
|
||||
end
|
||||
zipping "#{Time.now.to_i}_#{bid.name}.zip", user_zip_paths, OUTPUT_FOLDER
|
||||
zipping "#{Time.now.to_i}_#{bid.name}.zip", bid_homework_path, OUTPUT_FOLDER
|
||||
end
|
||||
|
||||
def zip_homework_by_user(homeattach)
|
||||
homeworks_attach_path = []
|
||||
# 需要将所有homework.attachments遍历加入zip
|
||||
# 并且返回zip路径
|
||||
user_attaches_paths = homeattach.attachments.each do |attach|
|
||||
homeattach.attachments.each do |attach|
|
||||
homeworks_attach_path << attach.diskfile#.to_s.slice((length+1)..-1)
|
||||
end
|
||||
zipping("#{homeattach.user.name.to_s}_#{Time.now.to_i}.zip", homeworks_attach_path, OUTPUT_FOLDER, true)
|
||||
zipping("#{Time.now.to_i}.zip", homeworks_attach_path, OUTPUT_FOLDER, true)
|
||||
end
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue