利用rubyzip导出zip文件
卫梓
2023-12-01
def compress
if File.exist?("#{RAILS_ROOT}/public/photos.zip")
File.delete("#{RAILS_ROOT}/public/photos.zip")
end
Zip::ZipFile.open "#{RAILS_ROOT}/public/photos.zip", Zip::ZipFile::CREATE do |zip|
add_to_file(file_path,zip)
end
def add_file_to_zip(file_path, zip)
if File.directory?(file_path)
Dir.foreach(file_path) do |sub_file_name|
add_file_to_zip("#{file_path}/#{sub_file_name}", zip) unless sub_file_name == '.' or sub_file_name == '..'
end
else
zip.add(file_path, file_path)
end
end
def compress
if File.exist?("#{RAILS_ROOT}/public/photos.zip")
File.delete("#{RAILS_ROOT}/public/photos.zip")
end
Zip::ZipFile.open "#{RAILS_ROOT}/public/photos.zip", Zip::ZipFile::CREATE do |zip|
add_file_to_zip(zip)
end
send_file("#{RAILS_ROOT}/public/photos.zip", :disposition=>'inline', :filename=>'photos.zip')
end
def add_file_to_zip(zip)
@last_test=AllTest.find(:last)
@sign_ups=SignUp.find(:all, :conditions => ['all_test_id=?', @last_test.id])
@sign_ups.each do |sub_file_name|
if File.exist?("public/photos/#{sub_file_name.photo_url}")
zip.add("photos/#{sub_file_name.student_no}.jpg", "public/photos/#{sub_file_name.photo_url}") unless sub_file_name.photo_url == '.' or sub_file_name.photo_url == '..'
end
end
end