我有一些宝贵的代码压缩了大量文件,它在 tmp 文件系统中创建了一个 zip 文件,并在那里添加了文件。
我试图通过使用 ruby 的 Tempfile 将文件存储在代码中来提高效率,而不是自己手动将其写入 tmp 目录并稍后将其删除。
我已经编写了这段代码来尝试这样做……</p>
def zip_up_files
require 'zip/zip'
t = Tempfile.new(["temp-filename-#{export_type}", '.zip'], :type => 'application/zip')
Zip::ZipOutputStream.open(t.path) do |z|
#pop some files in the zip...
end
#save it to the has_attachment :download on the model
self.download = File.open(t.path)
self.save
#delete TempFile...
t.close
end
这成功将 Tempfile 保存到模型上的 .download 中。但是,如果您现在导航到保存的 zip 文件,它不是一个 zip 文件,而是一个乱码文本文档。我想知道在将其保存到模型之前是否缺少创建或保存 zip 的内容。我尝试将类型放入创建的 TempFile 中。看起来 zip 缺少 MimeType。但我不确定,有人可以帮忙吗?
谢谢!