Ruby / Rails中Zip文件导出的问题

时间:2014-07-30 18:57:12

标签: ruby-on-rails ruby

我的rails操作存在问题,该操作从我的数据库中获取二进制(blob)文件并将它们打包成一个漂亮的zip文件然后最终发送出去下载。当我尝试解压缩文件时出现问题,它说“无法扩展;错误1 - 不允许操作”。我相信这意味着该文件已损坏,但我不知道我做错了什么。我已将我的代码包括在内,任何帮助将不胜感激。谢谢!

require 'zip/zip'
require 'zip/zipfilesystem'

def export
  @layers = Layer.where('group_id > 1')
  temp = Tempfile.new("layers-zip-export")
  Zip::ZipOutputStream.open(temp.path) do |zipfile|
    @layers.each do |layer|
      zipfile.put_next_entry(layer.name)
      file = Tempfile.new("temp-" + layer.id.to_s)
      file.binmode
      file << layer.file
      file.rewind
      zipfile.write IO.binread(file.path)
      file.close
      file.unlink
    end
  end

  send_file temp.path, :type => 'application/zip', :filename => "layer-export.zip"
  temp.close
end

0 个答案:

没有答案