我想用文件夹创建一个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"one_answers"spreadsheet.ods"one_answers"essay.odt".
现在,我希望前两个文件位于文件夹或目录内。当我提取zip文件时,我应该看到一个名为"信件和电子表格"的文件夹,其中两个文件在里面,一个文件在外面。我该怎么做呢?
下面的代码是可能的吗?
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 revision 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知道如何将它们组合在一起。