2

私の 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

この例では、2 つのファイルが動的に作成されて書き込まれ、ZIP ファイルに保存されます。

しかし、既存のファイル (!) を ZIP ファイルに追加するにはどうすればよいですか?たとえば、私の/app/assets/documentsフォルダーの PDF ファイルはどうすればよいでしょうか?

これははるかに簡単に達成できるはずですが、ドキュメントが見つかりません。

助けてくれてありがとう。

4

1 に答える 1

3
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 のパスです。それが役立つことを願っています!

于 2016-08-02T18:40:23.317 に答える