web-dev-qa-db-ja.com

cURLで応答ヘッダーファイル名を使用してファイルを保存するにはどうすればよいですか?

この質問は、cURLのコマンドラインバージョンに関するものです。

CGIスクリプトからファイルをダウンロードしようとしています。

http://example.com/Perl/dl.pl?ID=2

ブラウザを使用すると、ファイル名はremotefilename.gzとして表示されます。 cURLはファイルをdl.pl?ID=2として保存しようとしています。

CURLを取得して、応答ヘッダーのファイル名を持つファイルに保存するにはどうすればよいですか?

56
John

新しい十分なカールがある場合(バージョン7.20.0以降)、 -J /-remote-header-name が必要です。

--Jを -O と組み合わせて使用​​すると、curlは、URLのファイル名部分を出力ファイルに名前を付けるための主要な方法として使用し、Content-disposition:ヘッダーが応答、curlは代わりにその名前を使用します。

76
Daniel Stenberg
curl http://example.com/dl.php?file=3123123 -O -J

サーバーがリダイレクトを使用する場合は、以下を使用します。

--location-trusted
--max-redirs 10
17
egiray

複数のURLを一度にダウンロードしようとすると、curl -OJでセグメンテーション違反が発生することがわかりました。

私の解決策はwgetを使用することでした。最新バージョンはHTTP Content-Dispositionヘッダーをサポートしており、ヘッダーにはファイル名情報が含まれていることがよくあります。

wget --content-disposition http://example.com/download/url
15
jchook