我想在 Ruby on Rails 中压缩一些文件并将 zip 文件保存在 tmp 文件夹中。我有一个 Document 模型,它有一个带有关联上传者的名称字段。我还使用 Carrierwave 将文件上传到 Amazon S3。我有以下代码:
class Document < ActiveRecord::Base
mount_uploader :name, DocumentUploader
...
end
def create_zip
documents = Document.all
folder = "#{Rails.root}/tmp"
tmp_filename = "#{folder}/export.zip"
zip_path = tmp_filename
Zip::ZipFile::open(zip_path, true) do |zipfile|
documents.each do |photo|
zipfile.get_output_stream(document.name.identifier) do |io|
io.write document.name.file.read
end
end
end
end
这会在我的 tmp 文件夹中创建一个 export.zip 文件,但是当我尝试打开它时,存档管理器 (Mac OS X) 开始取消存档它,但一直在这样做而没有完成。我相信我的代码中缺少一些东西。zip 文件的大小对我来说确实有意义,但我遇到了这个问题。有什么想法吗?谢谢!