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