我想使用wget
(从 php 脚本)下载图像文件,但不想下载超过一定大小的文件。
我可以用 限制文件大小吗wget
?如果没有,有什么更好的方法?
答案1
如果您正在编写下载脚本,则应该考虑使用curl
。 Wget 可以解析输出并递归地获取整个站点,但curl 有更多与特定文件的实际下载相关的选项。这是手册页中的相关选项:
--max-filesize
指定要下载的文件的最大大小(以字节为单位)。如果请求的文件大于此值,传输将不会开始,curl 将返回退出代码 63。
注意:在下载之前并不总是知道文件大小,对于此类文件,此选项无效,即使该文件传输最终大于这个给定的限制。
关于这只适用于某些文件的注释值得考虑。客户端依赖服务器在开始下载之前报告文件有多大。大多数但肯定不是所有服务器都会报告此情况。
答案2
如果你想使用wget,这里有一个无需下载即可测试文件大小的方法:
wget --spider $URL 2>&1 | awk '/Length/ {print $2}'
$URL
当然,哪里是您要下载的文件的 URL。
因此您可以根据输出调整脚本。例如:
{ [ $(wget --spider $URL 2>&1 | awk '/Length/ {print $2}') -lt 20971520 ] && wget $URL; } || echo file to big
用于将下载大小限制为 20 MB。
(代码很难看,仅供参考)。
答案3
是的,有一种合理的方法可以使用 wget 设置最大文件大小,问题是足够的理由。因此,在此链接中,有一个很棒的 wget 补丁,并且已经编译了 wget。我出于合理的原因使用了它,而且效果非常好。我希望他们将其添加到 Linux 存储库中的 de wget 中。
https://yurichev.com/wget.html
祝你好运。
答案4
wget 有一个-Q
--quota
选项,可以在给出多个 URL(递归或输入列表)时限制最大下载量。
https://www.gnu.org/software/wget/manual/html_node/Download-Options.html