rubyzip zip :: zipfile.open_buffer期望类字符串或io的参数



我正在从数据库中读取BLOB数据(文件内容在CSV中)。我的变量的结果看起来像:

irb(main):144:0> my_string =>" x1f x8b b x00 xcb' xfby x02 xff xff xc5r xc5r xc1n xdb0 xdb0 f xbd xbd xf7 x04 x04 xf46 xf46 xf46 xa8 xa8 x81Dx15 xeb x90 xe6 xb0 x04 xd8qpd& xd1 xd1 x12k xae $ w xe8 xdf xdf x8f x8f x96 x9a x9a x9a xa2 x87 x87 x87 x01 x01 | x01 | x01 | x01 | x01 | x03hr x03hr x03hr x01 |> xd x7f xc0 xcb xe1 x03 x84 xc1 xc1 xd9 x00 x19 = z xd7o xc1 xc1 xc1 xf7 xf7 x19m]xd2 xd18 xfb xd4 x91 x88 xc7 xc6 xc6 xe2 xc5 xb7 xb7 x01 x88v xbeka xbeka xbeka x88 x88* ax x1d xb2 xd9 xac xde! x01 xfcu xeff x8b xd3 x98a x9e x9e# x0f xfa xfa x9d x9d xcex xcex xd2 m, xc4? xc4?f xe0 xd1 x81 xf7 xcfag: xd0gc xa1# xc6 xbe: xa3 x013pc xd2 xd2 xb5xdf xdc xb9 x03 xbf x9e 6@质量0 x0f X1E XA9 XA1 XA4 XC1DHBBT XB0 XA8 XB7 XB7 X87 XAC XAC XFD X05 XDD XDDDD XDDD XDDC Xe30 Xe30 XD55 XE1 XE1 XE1 XB3 x15 x15 x15 x8a 2 XBAC XF4 XF2 XA5 XA5 X9C XFE XFE XA6 X94 XAC XAC X15 X92I)(C XFB XB4

现在,我想在内存中阅读此信息,解压缩并解析CSV文件。我正在使用Rubyzip并尝试了以下内容:

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期望一类论证 字符串或io。找到:(IRB)的字符串:224

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

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

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

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

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

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

最新更新