如何在重定向后通过wget下载文件名

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在重定向后通过wget下载文件名相关的知识,希望对你有一定的参考价值。

我正在检索使用--content-disposition参数重定向后提供的文件,因此文件名是正确的文件名(重定向后)

现在我如何检索文件名以供将来在shell脚本中使用?

答案

获取文件名的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]

您可以解析此输出以获取下载文件的名称。

以上是关于如何在重定向后通过wget下载文件名的主要内容,如果未能解决你的问题,请参考以下文章

Symfony功能测试在重定向后断言

Laravel 表单请求动态字段在重定向时消失

React js在重定向到新路由后显示通知

spring security 在重定向到 logout.jsp 时给出错误

谷歌开发者工具“网络”标签在重定向后清除

laravel 4.2在重定向时重新生成会话