利用rubyzip导出zip文件

本文介绍了一个Ruby on Rails应用程序中的照片压缩和打包过程。该过程首先检查是否存在指定的照片文件夹,然后递归地将所有照片文件添加到ZIP存档中,并确保最终的ZIP文件可以通过Web直接访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值