我有一个
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