我目前正在使用--content-disposition
参数检索重定向后提供的文件,因此文件名是正确的文件名(重定向后)
现在如何获取文件名以供以后在Shell脚本中使用?
答案 0 :(得分:1)
HTTP规范中获取文件名的唯一直接方法是Content-Disposition
标头。在没有该标头的情况下,客户端通常会根据请求URI推断文件的名称。
如果使用Wget(假设不存在Content-Disposition
头),它将使用原始请求的URI中提到的名称保存文件。例如,如果您使用http://example.com/afile
调用Wget从而将您重定向到http://example.com/bfile
,则保存的文件将称为afile
。这是一种安全措施,可防止恶意服务器覆盖当前目录中的其他重要文件,例如您的.bashrc
。
您可以使用--trust-server-names
选项禁用此行为,在这种情况下,它将保存名称为bfile
的文件。
然后是内容处置。 如果已启用并且标头存在,它将用于命名文件。
所有这些都说明文件的最终名称有些难以衡量。最简单的方法是使用-O filename
保存文件,因此您知道文件的确切名称。如果您不想这样做,那么最简单的选择就是使用-nv
选项调用wget,它会输出如下所示的行:
% wget -nv example.com
2019-04-20 10:43:48 URL:http://example.com/ [1270/1270] -> "index.html" [1]
您可以解析此输出以获取下载文件的名称。