【问题标题】:Download files one at a time, not all at once一次下载一个文件,而不是一次下载所有文件
【发布时间】:2010-01-01 19:17:18
【问题描述】:

我正在尝试下载一组图像,其中大约 200 张。现在,我可以在 firefox 上安装一些插件或脚本,只需点击几下,我就可以将它们全部下载,但在我想到这样做之前,我正在考虑如何用几行代码来做到这一点。

我可以使用的语言是 C#、Java 和 PHP。我更喜欢在 PHP 中执行此操作,因为我以前从未使用过 curl。

图片排列整齐,我已经检查过了。文件名是一个字符串,在整个系列中保持不变,并在末尾附加 .1(第 1 点)、.2、.3 等等......

所以我想简单地使用一个 foreach 循环,但我不确定这将如何执行。即使以前从未使用过 curl,但有些事情告诉我,如果我不告诉 curl 等待每个图像完成,它只会冲过 foreach 循环,因此,尝试一次下载它们。

使用 curl 时这是如何工作的?我是否需要设置一些东西,或者我的担心是不公正的,我对文档的研究被证明是错误的?

当我在做的时候:第一次使用 curl 我应该知道什么?

【问题讨论】:

  • 如果我是你,我会用 bash 来做。

标签: php curl download


【解决方案1】:

我建议你使用 PHP 和 curl。这是一个不错的类,您可以使用它: http://www.bitrepository.com/download-image.html

该类默认设置为等待 60 秒以允许图像正确下载。

您需要做的就是为图像名称添加一个循环。

【讨论】:

  • 经过测试并且有效。谢谢你给我看。分析该类的工作使有关 curl 的一些事情更加清晰。
【解决方案2】:

curl 下载完成后退出。因此,如果您使用 PHP 的 system 调用(等待您调用的子进程完成)调用 curl,图像将一个接一个地下载。

【讨论】:

    【解决方案3】:

    在 C# 中,您可以使用 WebClient 类来完成此类工作,尤其是它的 DownloadFile method,即同步;顺便说一下,WebClient 也提供了异步方法。
    但是,在 Linux 上,我会使用 bash 和 wget。

    【讨论】:

    • 也试过这种方式,效果很好。感谢您的提示。
    【解决方案4】:

    别担心,libcurl 是同步的。即使您要异步使用 libcurl(或任何其他库),您也可以在前一个图像的回调结束时下载下一个图像。

    我认为在 PHP 中你可以循环 file_get_contents。 C# 和 Java 也有非 curl 网络接口。

    【讨论】:

      猜你喜欢
      • 2011-01-03
      • 1970-01-01
      • 2022-08-19
      • 2014-10-20
      • 1970-01-01
      • 2019-10-08
      • 1970-01-01
      • 2019-01-30
      • 1970-01-01
      相关资源
      最近更新 更多