此问题与cURL的命令行版本有关。
我正在尝试从cgi脚本下载文件。
http://someserver/perl/dl.pl?ID=2
使用浏览器,文件名显示为'remotefilename.gz' cURL希望将文件另存为“dl.pl?ID=2”
如何将cURL保存到具有响应头文件名的文件?
答案 0 :(得分:68)
如果你有足够新的卷曲(版本7.20.0或更高版本),-J/--remote-header-name就是你想要的。
您将-J与-O结合使用,这使得curl使用URL中的文件名部分作为命名输出文件的主要方式,然后在响应中使用Content-disposition:标头,curl将使用该名称。
答案 1 :(得分:16)
curl http://example.com/dl.php?file=3123123 -O -J
如果服务器使用重定向,请使用以下命令:
--location-trusted
--max-redirs 10
答案 2 :(得分:15)
我发现curl -OJ给了我分段错误:尝试一次下载多个网址时出现11错误。
我的解决方案是使用wget。最新版本支持HTTP Content-Disposition标头,通常包含文件名信息。
wget --content-disposition http://example.com/download/url
答案 3 :(得分:-3)
您可以尝试-o
或-O
选项。