gem 'rubyzip', '>= 1.0.0'
gem 'zip-zip'
require 'rubygems'
require 'zip'
# 압축할 파일들이 있는 폴더 (예시)
folder = "#{Rails.root}/public/downloads"
input_filenames = ['image.jpg', 'description.txt', 'stats.csv']
#위 파일들을 묶어줄 zip 폴더를 만들어줌
zipfile_name = "#{Rails.root}/public/archive.zip"
#Zip::File.open(zip폴더이름, Zip::File::CREATE) 형식으로 zipfile을 만들어서, 그 안에 원하는 파일들 넣어줌
Zip::File.open(zipfile_name, Zip::File::CREATE) do |zipfile|
input_filenames.each do |filename|
# zipfile.add(파일이름, 파일 원본 주소)
zipfile.add(filename, File.join(folder, filename))
end
end
#Zip::File.open.. 블록 밑에 작성
#send_file('zip file 주소', type, filename)
send_file(File.join("#{Rails.root}/public/", 'archive.zip'), :type => 'application/zip', :filename => "#{Time.now.to_date}.zip")
압축 파일 전체 코드입니다.
require 'rubygems'
require 'zip'
# 압축할 파일들이 있는 폴더 (예시)
folder = "#{Rails.root}/public/downloads"
input_filenames = ['image.jpg', 'description.txt', 'stats.csv']
#위 파일들을 묶어줄 zip 폴더를 만들어줌
zipfile_name = "#{Rails.root}/public/archive.zip"
#Zip::File.open(zip폴더이름, Zip::File::CREATE) 형식으로 zipfile을 만들어서, 그 안에 원하는 파일들 넣어줌
Zip::File.open(zipfile_name, Zip::File::CREATE) do |zipfile|
input_filenames.each do |filename|
# zipfile.add(파일이름, 파일 원본 주소)
zipfile.add(filename, File.join(folder, filename))
end
end
위 예제들은 rubyzip gem 링크에 더 자세히 설명이 되어있습니다.