如何在 Zip::OutputStream 中创建文件夹?
How do I create folders inside Zip::OutputStream?
我想创建一个包含 文件夹 或 目录 的 Zip 文件,使用 Ruby-on-Rails 和 Zip.
如何在 Zip::OutputStream 中创建文件夹或目录?
我目前拥有的
compressed_filestream = Zip::OutputStream.write_buffer do |zos|
zos.put_next_entry "letter.odt"
zos.write letter
zos.put_next_entry "spreadsheet.ods"
zos.write spreadsheet
zos.put_next_entry "essay.odt"
zos.write essay
end
compressed_filestream.rewind
send_data compressed_filestream.read, filename: "neuer_tn.zip"
此代码生成一个 Zip 文件,我可以从中提取三个文件,分别称为“letter.odt”、“spreadsheet.ods”和“essay.odt”。
现在,我希望前两个文件位于文件夹或目录中。当我解压缩 Zip 文件时,我应该会看到一个名为“letter and spreadsheet”的文件夹,里面有两个文件,外面有一个文件。我该怎么做?
是否可以实现类似下面的代码?
compressed_filestream = Zip::OutputStream.write_buffer do |zos|
zos.create_folder "letter and spreadsheet" do
zos.put_next_entry "letter.odt"
zos.write letter
zos.put_next_entry "spreadsheet.ods"
zos.write spreadsheet
end
zos.put_next_entry "essay.odt"
zos.write essay
end
compressed_filestream.rewind
send_data compressed_filestream.read, filename: "neuer_tn.zip"
Rails 6.0.3.4,
ruby 2.6.6p146(2020-03-31 修订版 67876)[x86_64-linux]
非常简单,在 put_next_entry
调用中包含文件夹名称...
zos.put_next_entry "awesome_folder_here/letter.odt"
你甚至可以更深入...
zos.put_next_entry "awesome_folder_here/subfolder_too/letter.odt"
而且 zip 知道如何将它们放在一起。
我想创建一个包含 文件夹 或 目录 的 Zip 文件,使用 Ruby-on-Rails 和 Zip.
如何在 Zip::OutputStream 中创建文件夹或目录?
我目前拥有的
compressed_filestream = Zip::OutputStream.write_buffer do |zos|
zos.put_next_entry "letter.odt"
zos.write letter
zos.put_next_entry "spreadsheet.ods"
zos.write spreadsheet
zos.put_next_entry "essay.odt"
zos.write essay
end
compressed_filestream.rewind
send_data compressed_filestream.read, filename: "neuer_tn.zip"
此代码生成一个 Zip 文件,我可以从中提取三个文件,分别称为“letter.odt”、“spreadsheet.ods”和“essay.odt”。
现在,我希望前两个文件位于文件夹或目录中。当我解压缩 Zip 文件时,我应该会看到一个名为“letter and spreadsheet”的文件夹,里面有两个文件,外面有一个文件。我该怎么做?
是否可以实现类似下面的代码?
compressed_filestream = Zip::OutputStream.write_buffer do |zos|
zos.create_folder "letter and spreadsheet" do
zos.put_next_entry "letter.odt"
zos.write letter
zos.put_next_entry "spreadsheet.ods"
zos.write spreadsheet
end
zos.put_next_entry "essay.odt"
zos.write essay
end
compressed_filestream.rewind
send_data compressed_filestream.read, filename: "neuer_tn.zip"
Rails 6.0.3.4, ruby 2.6.6p146(2020-03-31 修订版 67876)[x86_64-linux]
非常简单,在 put_next_entry
调用中包含文件夹名称...
zos.put_next_entry "awesome_folder_here/letter.odt"
你甚至可以更深入...
zos.put_next_entry "awesome_folder_here/subfolder_too/letter.odt"
而且 zip 知道如何将它们放在一起。