Elixir で URL からファイル/画像をダウンロードするコードはどのようなものですか?
Google 検索では、Elixir 自体のダウンロード方法が返されるようです。
ベストアンサー1
見てhttpoisonGET
、Elixir の HTTP クライアント。画像 (またはファイル、どちらでも構いません) を指す URL にリクエストを発行するだけです。
%HTTPoison.Response{body: body} = HTTPoison.get!("http://example.com/img.png")
HTTPoison.get!/1
構造体を返しますHTTPoison.Response
。レスポンスの本体を取得するために、その構造体に一致させました。これでbody
変数に画像データ(単なるバイナリ)が含まれるようになりました。これをファイルに書き込むことができます。
File.write!("/tmp/image.png", body)
これで完了です :)。
これは明らかにhttpoisonを使わなくても可能ですが、生のTCP接続を処理する必要があります(
gen_tcp
Erlang モジュール)、HTTP 応答の解析、通常は手動で実行したくない一連の処理を実行します。
おっと、httpc
Erlang モジュール (stdlib に含まれています!) を使用すると、HTTPoison のような依存関係を必要とせずに、これを非常に簡単に実行できます。
Application.ensure_all_started :inets
{:ok, resp} = :httpc.request(:get, {'http://example.com/my_image.jpg', []}, [], [body_format: :binary])
{{_, 200, 'OK'}, _headers, body} = resp
File.write!("/tmp/my_image.jpg", body)