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

Ruby on rails Ruby/Rails中的Zip文件导出问题,ruby-on-rails,ruby,Ruby On Rails,Ruby,我的rails操作遇到了一个问题,它从我的数据库中获取二进制(blob)文件,并将它们打包成一个漂亮的zip文件,然后最终发送出去供下载。当我尝试解压文件时会出现问题,它会说“无法扩展;错误1-不允许操作”。我相信这意味着文件已损坏,但我不知道我做错了什么。我已经在下面包含了我的代码,任何帮助都将不胜感激。谢谢 require 'zip/zip' require 'zip/zipfilesystem' def export @layers = Layer.where('group_id &

我的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
需要'zip/zip'
需要“拉链/拉链系统”
def导出
@层=层。其中('group\u id>1')
temp=Tempfile.new(“图层zip导出”)
Zip::ZipoutStream.open(临时路径)do | zipfile|
@层。每个do |层|
zipfile.put_下一个_条目(layer.name)
file=Tempfile.new(“temp-”+layer.id.to\s)
file.binmode
文件'application/zip',:filename=>“layer export.zip”
临时关闭
结束

你好。。同样的问题。。你能想出来吗?