我有一个文件链接,我将使用cURL下载,我需要将此文件输出到某个临时文件,我还需要获取特定的标头值。
示例:
Link: http://my.download.url<br>
Output to: /tmp/my-downloaded-file<br>
Header(Content-Length or whatever): abc123
答案 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"