我有一个 Ruby 应用程序,我需要修改现有的 zip 文件。
我想在内存中构建 zip 文件并流回字节,而无需将文件写入文件系统。如果我最终在 Heroku 上托管它,我认为我无法写入文件系统。有谁知道这样做的方法吗?
我看了Zip::ZipFile但看起来它总是想写入文件系统。我想“基于 java 实现”我将能够只获取压缩文件的字节,这可以在 java 中完成,但我看不到这样做的方法。
编辑:
我要问的与此基本相同,但针对 Ruby 而不是 Python: Function to create in-memory zip file and return as http response
最佳答案
有同样的问题,必须通过关闭文件并读取数据并将其作为 send_data 流式传输来使其工作
然后找到了另一个在 heroku 上运行良好并且可以处理内存缓冲区的库:它是 zipruby (不是 rubyzip)。
buffer = ''
Zip::Archive.open_buffer(buffer, Zip::CREATE) do |archive|
files.each do |wood, report|
title = wood.abbreviation+".txt"
archive.add_buffer(title, report);
end
end
file_name = "dimter_#{@offer.customerName}_#{Time.now.strftime("%m%d%Y_%H%M")}.zip"
send_data buffer, :type => 'application/zip', :disposition => 'attachment', :filename => file_name
关于ruby-on-rails - 如何仅修改内存中的 zip 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4350559/