2016-06-12 15 views
1

を、私は、ファイルのバイナリ内容はレスポンスボディに返されるGoogleのクラウドストレージ(https://cloud.google.com/storage/docs/json_api/v1/objects/get#parameters解凍ファイルスロー:data_error

からファイルをダウンロードしています。使い方:zlib.uncompressは私

** (ErlangError) erlang error: :data_error 

を投げる私は、ディスク上に保存し、手動で抽出することにより、ファイルの内容をチェックしました。

unixコマンドを使用せずにelixir/erlangでファイルを解凍する別の方法はありますか?

編集:バイナリを点検

は私にOK

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 
+0

':zip.uncompress(zipped_file)' – coderVishal

+0

@coderVishal '未定義関数'が見つかりました。あなたはそのモジュールのドキュメントを持っていますか? – paulorcdiniz

+0

自分の解凍を試みるためにサンプルファイルへのリンクを投稿できますか?それが短ければ、これの出力を 'File.read(" the_file ")|> inspect(バイナリ:: as_binaries)|> IO.puts'の中に入れてください。 – Dogbert

答えて

0

私はそれを持っています。

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

おかげで皆:アーランフォーラム(http://erlang.org/pipermail/erlang-questions/2009-November/047832.html)からの読み込み、私は正しい手順を見つけました!

+0

簡単な質問: ':zlib.gunzip(result.body)'は動作しますか? – Dogbert

+0

@Dogbert Weird、 ':zlib.gunzip'は返されません。それは – paulorcdiniz

+0

ストーンです。これは奇妙な、おそらくバグです。圧縮されていないデータを返すか、エラーを投げるか、決してハングしないでください。 – Dogbert

4

あなたはアーランからzipを使用して試すことができますを与えました。あなたが探している機能はunzip

:zip.unzip(zipped_file) 
+0

いいね!かなりうまくいきませんでしたが、エラーはもっと明白です: '{:error、:bad_eocd} ' – paulorcdiniz

+0

これは役に立ちます。http://stackoverflow.com/questions/12908409/erlang-zipunzip-1-error- bad-central-directory-and-error-bad-eocd – coderVishal

+1

これは正しいことです、ありがとう、雄牛の目 –