2017-01-03 2 views
1

私はcURLを使用してダウンロードしようとしているファイルリンクを持っています。このファイルを特定の一時ファイルに出力する必要があります。また、特定のヘッダー値を取得する必要があります。ファイルに出力して特定のヘッダファイルをcURLで取得する方法は?

例:

Link: http://my.download.url<br> 
Output to: /tmp/my-downloaded-file<br> 
Header(Content-Length or whatever): abc123 
+0

あなたとあなたの内容私は、ファイルに出力をコピーしたい – Inian

+0

@Inian(私が提供するつもりだパス)を抽出したいの正確な出力を提供しますコンテンツの名前。 –

+0

十分なフェア!それに書いた後に何をしたいのですか?例を提供する – Inian

答えて

1

ので、ファイル名は、ヘッダの値に依存?

cURLは、私が知る限り、ヘッダーを1つのストリーム(標準出力)に、本文を別のストリームに取得することを許可しません。あなたがする必要があるのは、それらのすべてをまとめて解析するか、2回の呼び出しを行うことです。ここでは、2つのコールアプローチがある:

# URL and the header you want 
url="http://www.example.com" 
hdr="Content-Length" 

# get the value of the header (this does not download the body) 
headerValue=$(curl -sI "$url" | grep -i "^$hdr:" | cut -f2 -d: | sed 's/^[ \r\n\t]*//;s/[ \r\n\t]*$//') 

# create a file name from that header value 
fileName="/tmp/download-$headerValue" 

# download the body into that file 
curl -so "$fileName" "$url" 
+1

最初の呼び出しはヘッダーのみをダウンロードする 'HEAD'を実行します。 2回目の呼び出しは 'GET'を実行し、ヘッダとボディをダウンロードします。 – bishop

+0

オハイオ州はそれを得たので、2回ダウンロードしません。ありがとう! –

関連する問題