rubyzip Zip::ZipFile.open_buffer 需要一个 String 类或 IO 类的参数

标签 ruby ruby-on-rails-4 rubyzip

我正在从压缩的数据库中读取 blob 数据(文件内容为 CSV 格式)。 我的变量的结果如下所示:

irb(main):144:0> my_string => "\x1F\x8B\b\x00\xCB'\xFBY\x02\xFF\xC5R\xC1n\xDB0\f\xBD\xF7+\x04\xF46\xA8\x81d\xCB\x96}\f\x92\x15\xEB\x90\xE6\xB0\x04\xD8qPd&\xD1\x12K\xAE$w\xE8\xDF\x8F\x96\x9A\xA2\x87\x01\x03r\t\r\x8B|\x92H>>\xD\x7F\xC0\xCB\b\xE1\x03\x84\xC1\xD9\x00\x19=z\xD7o\xC1\xF7\x19m]\x8Aw*\xEA\xE3z\xECwX%ze\x83\xD2\xD18\xFB\xD4\x91\x88\xC7\xC6\xE2\xC5\xB7\x01\x88V\xBEKA\x88*\x8E\x81D\xD3c\x17\xD5\x0FD\xBD\x82W\aX\x1D\xB2\xD9\xAC\xDE!VM;\xB9\xFB\xD4*\xC1\xC1\xD8\xC3<\xD7\xC8\x04R\x9B\xDE \x01\xFCU\xEFF\x8B\xD3\x98a\x9E#\x0F\xFA\x9D\xED\xCEX\xD2+M,\xC4?\xCE\x9F\xC8\xD1\x85\xB8U\x87\xE41s\f\xE0\xD1\x81\xF7\xCFAG:\xD0gc\xA1#\xC6\xBE:\xA3\x013pc\xD2\xB5#\xBF\xDD\xE8q~rV\x16\xAC\xEA\xB3\b\xDF\xDC\xB9\x03\xBF\x9E 6@\xDEOK\xA2\xB4\x8E_m\xF48\xBD;\x81\xC5f\xFB\xA5\x8A\x8A\x84\xD1\xEB\xA3\xF28\xD8\xDE\x9D\x8DCxF0B\xA0\x0F\x1E\xA9\xA1\xA4\xC1DHBbt\xB0\xA8\xB7\x87\xAC\xFD\x05\xDD\xDDc\xE30\xD5\xE1\xB3\x8A\x143.f\xDB\x15\xBA\xA2\xBAc\xF4\xF2\xA5\xA5\x9C\xFE\xA6\x94\xAC\x15\x92I)(C\xFB\xB4

现在,我想在内存中读取这些信息,解压缩并解析 csv 文件。 我正在使用 ruby​​zip 并尝试了以下操作:

Zip::File.open_buffer(my_string) do |zip|
  zip.each do |entry|
    decompressed_data += entry.get_input_stream.read
  end
end

RuntimeError: Zip::ZipFile.open_buffer expects an argument of class String or IO. Found: String from (irb):224

有没有办法检索 zip 文件的内容?

最佳答案

我认为这里的主要问题是错误消息有点误导......

它应该说预期的文件名或 io。

在您的代码中,您需要将内容包装在 StringIO 对象中,以便将其视为流。

由于 open_buffer 已弃用,您应该使用 open

所以它看起来像open(StringIO.new(my_string)

关于rubyzip Zip::ZipFile.open_buffer 需要一个 String 类或 IO 类的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47437265/

相关文章:

ruby - 运行时错误 : Circular dependency detected while autoloading constant

ruby-on-rails-4 - 如何将参数传递给ActiveModel::ArraySerializer?

ruby - 在 Ruby 中创建 zip 存档而不将存档文件保存到磁盘

ruby-on-rails - AWS s3从rails应用程序访问私有(private)存储桶url

ruby - 如何使用 ruby​​ 拆分/重新加入 zip 文件

ruby - Sinatra/1.4.3 使用 Rack::Session::Cookie 警告

ruby - 希望正则表达式在第一次出现 "."和 ";"时停止

ruby - 从 FP 的角度来看,在 YARV Ruby 中创建线程通常被视为副作用吗?

ruby-on-rails - 如何在 Ruby 中使用动态分派(dispatch)调用方法(当方法是模块的一部分时)?

ruby-on-rails - Rails 4 在保存时创建关联对象