如何输出到文件并获取cURL中的特定头文件?

时间:2017-01-03 14:10:17

标签: linux unix curl

我有一个文件链接,我将使用cURL下载,我需要将此文件输出到某个临时文件,我还需要获取特定的标头值。

示例:

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

1 个答案:

答案 0 :(得分:1)

那么,文件名取决于标题的值?

据我所知,

cURL不允许你在一个流上(比如标准输出)和另一个流上的主体获取标题。您需要做的是将所有这些组合在一起并解析出来,或者执行两次调用。这是两种调用方法:

# 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"