如何使用响应头文件名和cURL保存文件
问题描述:
此问题与cURL的命令行版本有关。如何使用响应头文件名和cURL保存文件
我试图从cgi脚本下载文件。
http://someserver/perl/dl.pl?ID=2
使用浏览器的文件名出现为“remotefilename.gz” 卷曲想将文件保存为“dl.pl?ID=2”
我如何卷曲救从响应头文件的文件?
答
如果您有足够新的卷曲(版本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
+0
请小心'--location-trusted',因为它会将HTTP auth信息转发到重定向,即使跨不同的域。 '--location'似乎是一个更安全的选择。 – jchook 2016-03-19 19:29:01
答
我发现,卷曲-OJ是给我分段错误:试图同时下载多个URL时11错误。
我的解决方案是使用wget。最新版本支持HTTP Content-Disposition标头,通常包含文件名信息。
wget --content-disposition http://example.com/download/url
心目中,你应该使用-J/- 结合远程头名-O/- 远程名称选项,否则它不起作用。 – sepehr 2013-11-14 17:21:54
'-OJ'是一个杀手选项,很容易记住:) – colminator 2018-03-08 21:23:52