使用Elixir解压缩文件抛出:data_error

时间:2016-06-12 11:33:50

标签: elixir

我正在从Google云端存储中下载文件(https://cloud.google.com/storage/docs/json_api/v1/objects/get#parameters

文件的二进制内容在响应正文中返回。使用:zlib.uncompress抛出我

** (ErlangError) erlang error: :data_error

我通过将文件保存在磁盘上并手动提取来检查文件的内容。

有没有其他方法可以在不使用unix命令的情况下解压缩elixir / erlang中的文件?

编辑:

检查二进制文件给了我一个好的

r.body |> inspect(binaries: :as_binaries) |> IO.puts
<<31, 139, 8, 0, 0, 0, 0, 0, 0, 0, 212, 253, 91, 115, 27, 73, 178, 53, 10, 190, 207, 175, 104, 219, 207, 95, 193, 50, 174, 153, 57, 111, 188, 64, 36, 27, 44, 146, 6, 146, 170, 22, 95, 218, 212, 85, 234, 106, 157, 93, ...>>
:ok

2 个答案:

答案 0 :(得分:4)

您可以尝试使用erlang中的zip。您要查找的功能是unzip

:zip.unzip(zipped_file)

答案 1 :(得分:1)

我明白了。从erlang论坛(http://erlang.org/pipermail/erlang-questions/2009-November/047832.html)读取我发现了正确的步骤:

z = :zlib.open
:zlib.inflateInit(z, 31)
:zlib.inflate(z, result.body)

谢谢大家!