我的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