【问题标题】:How to add existing file to ZIP file using RubyZIP?如何使用 RubyZIP 将现有文件添加到 ZIP 文件?
【发布时间】:2016-08-02 18:16:49
【问题描述】:

在我的 Rails 4.2 应用程序中,我使用 RubyZIP 创建类似于以下的控制器操作:

class SomeController < ApplicationController

  def some_action
    file_stream = Zip::ZipOutputStream.write_buffer do |zip|
      zip.put_next_entry "dir1/hello.txt"
      zip.print "Hello"
      zip.put_next_entry "dir2/hello.txt"
      zip.print "World"
    end
    file_stream.rewind
    respond_to do |format|
      format.zip do
        send_data file_stream.read, filename: "zip_file.zip"
      end
    end
  end

end

在示例中,两个文件是动态创建和写入的,然后保存到 ZIP 文件中。

但是我怎样才能将已经存在的文件(!)也添加到 ZIP 文件中,例如我的/app/assets/documents 文件夹中的 PDF 文件?

这应该更容易实现,但我找不到任何文档。

感谢您的帮助。

【问题讨论】:

  • 可以zip.put_next_entry "filename"; zip &lt;&lt; File.binread("file/path/and/filename")吗?
  • 成功了!谢谢,@matt!

标签: ruby-on-rails ruby rubyzip


【解决方案1】:
zip_file = File.new(zip_file_path, 'w')

Zip::File.open(zip_file.path, Zip::File::Create) do |zip|
  zip.add(file_name, file_path)
end

zip_file

这里,file_name 和 file_path 是要添加到 zip 文件中的文件的名称和路径,而 zip_file_path 是 ZipFile 的路径。希望对您有所帮助!

【讨论】:

  • 谢谢。这确实有效,但在我的情况下不需要在磁盘上创建文件。
  • 使用后可以删除文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-15
  • 1970-01-01
相关资源
最近更新 更多