我有一个字符串中的 zip 存档,但 rubyzip gem 似乎需要从文件中输入。我想出的最好的方法是将 zip 存档写入临时文件,其唯一目的是将文件名传递给Zip::ZipFile.foreach()
,但这似乎很折磨:
require 'zip/zip'
def unzip(page)
"".tap do |str|
Tempfile.open("unzip") do |tmpfile|
tmpfile.write(page)
Zip::ZipFile.foreach(tmpfile.path()) do |zip_entry|
zip_entry.get_input_stream {|io| str << io.read}
end
end
end
end
有没有更简单的方法?
注意:另请参阅Ruby 解压缩字符串。