ruby-on-rails - 如何仅修改内存中的 zip 文件?

标签 ruby-on-rails ruby zip

我有一个 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 (不是 ruby​​zip)。

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/

相关文章:

ruby - 为什么 Array.constants 不显示 Object 类中的常量列表?

r - 在 R 中下载 Kaggle zip 文件

java - 如何检查生成的 zip 文件是否损坏?

javascript - Rails 3 form_tag 与 'remote: true' 以 HTML 形式转到 Controller (在平衡支付回调之后?)

ruby-on-rails - 在 ActiveRecord 3 中添加自定义 SELECT

javascript - 数据表发布请求参数不起作用

ruby-on-rails - Rails 4 : PayPal IPN, 不同卖家的付款

ruby - 从文件中拆分 ruby

ruby - 模块嵌套在 instance_eval/exec 或 module_eval/exec 中

c# - 如何压缩一个目录的内容,除了一个子目录?