|
|
@ -1,10 +1,11 @@
|
|
|
|
|
|
|
|
require 'zip'
|
|
|
|
class ZipdownController < ApplicationController
|
|
|
|
class ZipdownController < ApplicationController
|
|
|
|
#查找项目(课程)
|
|
|
|
#查找项目(课程)
|
|
|
|
before_filter :find_project_by_bid_id, :only => [:assort]
|
|
|
|
before_filter :find_project_by_bid_id, :only => [:assort]
|
|
|
|
#检查权限
|
|
|
|
#检查权限
|
|
|
|
#勿删 before_filter :authorize, :only => [:assort,:download_user_homework]
|
|
|
|
#勿删 before_filter :authorize, :only => [:assort,:download_user_homework]
|
|
|
|
SAVE_FOLDER = "#{Rails.root}/files"
|
|
|
|
SAVE_FOLDER = "#{Rails.root}/files"
|
|
|
|
OUTPUT_FOLDER = "#{Rails.root}/tmp/archiveZip"
|
|
|
|
OUTPUT_FOLDER = "#{Rails.root}/files/archiveZip"
|
|
|
|
|
|
|
|
|
|
|
|
#统一下载功能
|
|
|
|
#统一下载功能
|
|
|
|
def download
|
|
|
|
def download
|
|
|
@ -181,23 +182,19 @@ class ZipdownController < ApplicationController
|
|
|
|
zipfile_name = "#{output_path}/#{rename_zipfile}"
|
|
|
|
zipfile_name = "#{output_path}/#{rename_zipfile}"
|
|
|
|
|
|
|
|
|
|
|
|
Dir.mkdir(File.dirname(zipfile_name)) unless File.exist?(File.dirname(zipfile_name))
|
|
|
|
Dir.mkdir(File.dirname(zipfile_name)) unless File.exist?(File.dirname(zipfile_name))
|
|
|
|
Zip::Archive.open(zipfile_name, Zip::CREATE) do |zipfile|
|
|
|
|
Zip::File.open(zipfile_name, Zip::File::CREATE) do |zipfile|
|
|
|
|
files_paths.each do |filename|
|
|
|
|
files_paths.each do |filename|
|
|
|
|
flag = true
|
|
|
|
|
|
|
|
index = 1
|
|
|
|
|
|
|
|
rename_file = File.basename(filename)
|
|
|
|
rename_file = File.basename(filename)
|
|
|
|
rename_file = filename_to_real( File.basename(filename)) if is_attachment
|
|
|
|
rename_file = filename_to_real( File.basename(filename)) if is_attachment
|
|
|
|
|
|
|
|
|
|
|
|
begin
|
|
|
|
begin
|
|
|
|
zipfile.add_file(rename_file, filename)
|
|
|
|
zipfile.add(rename_file, filename)
|
|
|
|
flag = false
|
|
|
|
|
|
|
|
rescue Exception => e
|
|
|
|
rescue Exception => e
|
|
|
|
zipfile.add_buffer('FILE_NOTICE.txt', l(:label_file_exist))
|
|
|
|
zipfile.get_output_stream('FILE_NOTICE.txt'){|os| os.write l(:label_file_exist)}
|
|
|
|
next
|
|
|
|
next
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
unless not_exist_file.empty?
|
|
|
|
unless not_exist_file.empty?
|
|
|
|
zipfile.add_buffer('FILE_LOST.txt', l(:label_file_lost) + not_exist_file.join(',').to_s)
|
|
|
|
zipfile.get_output_stream('FILE_LOST.txt'){|os| os.write l(:label_file_lost) + not_exist_file.join(',').to_s}
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
zipfile_name
|
|
|
|
zipfile_name
|
|
|
|