Elixir - URL からファイル (画像) をダウンロードする 質問する

Elixir - URL からファイル (画像) をダウンロードする 質問する

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 応答の解析、通常は手動で実行したくない一連の処理を実行します。

おっと、httpcErlang モジュール (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)

おすすめ記事