如何从各种URL下载图像(相同路径)

时间:2016-05-23 17:07:13

标签: php image curl download

我想从网址下载大约200张图片。例如:获取www.web.com/images/001.png并下载,获取www.web.com/images/002.png并下载并完成200.png。

我已阅读Grab/download images from multiple pages using php preg_match_all & cURL但我不知道如何修改PHP来做那件事。

如果你能帮助我,我将非常感激。非常感谢你

3 个答案:

答案 0 :(得分:1)

最简单的方法是创建一个for循环,从1到200计数,然后对于每个计数,它会对图像进行请求并将其保存到磁盘(我假设您要保存图像到你的磁盘)。 可以在底部找到工作示例。

让我们从设置一些变量开始:

$baseUrl = 'http://www.web.com/';
$localDirectory = 'downloaded_images/';
$maxImageNumber = 200;

第一个变量$baseUrl定义了图像的加载位置。第二个定义了保存图像的本地目录。 运行代码之前请确保此目录存在,因为它不会自动生成。最后一个变量$maxImageNumber存储了最大的图像编号,我们需要for循环。

设置变量后,我们可以编写for循环。由分号;分隔,括号中有三个部分。第一个是数字的起点,我们将向上计数。第二个确保我们不会超过我们的限制,最后一个只是使用++简写表示该数字将被计算在内。

for($imageNumber = 1; $imageNumber <= $maxImageNumber; $imageNumber++) {
    // code goes here
}

在这个for循环中,我们现在可以生成我们的文件名并将图像下载/保存到磁盘。第一行使用函数str_pad()将前导0添加到图像文件中(就像在您的示例中一样),然后将扩展名.png添加到名称中。这允许我们重复使用文件名进行加载和保存。第二行通过组合基础和图像文件名来加载具有函数file_get_contents()的图像。在最后一行中,我们使用file_put_contents()将我们之前加载的$fileData保存到磁盘(使用本地目录和图像文件名)。

$imageFileName = str_pad($imageNumber, 3, '0', STR_PAD_LEFT) . '.png';
$fileData = file_get_contents($baseUrl . $imageFileName);
file_put_contents($localDirectory . $imageFileName, $fileData);

完整代码应如下所示:

<?php

$baseUrl = 'http://www.web.com/images/';
$localDirectory = 'downloaded_images/';
$maxImageNumber = 10;

for($imageNumber = 1; $imageNumber <= $maxImageNumber; $imageNumber++) {
    $imageFileName = str_pad($imageNumber, 3, '0', STR_PAD_LEFT) . '.png';
    $fileData = file_get_contents($baseUrl . $imageFileName);

    file_put_contents($localDirectory . $imageFileName, $fileData);
}

万一这一切都不起作用,你可以尝试一些事情

  • 检查$localDirectory是否存在且可写。
  • 如果file_get_contents()不起作用,您可以use curl instead
  • 确保执行此代码的计算机可以访问远程服务器

答案 1 :(得分:0)

非常感谢你,但想象一下pics在www.web.com/image_0001_big.png和www.web.com/image_002_big.png等等......(最后一次是web.com/image_0200_big.png)

这不起作用(我不知道为什么)

accoreconsole.exe

感谢。你真了不起!谢谢您的帮助!我正在学习PHP,而我还是初学者:(

我的错误:

警告:str_pad()最多需要4个参数,在第9行的C:\ xampp \ htdocs \ auto.php中给出5个

警告:file_get_contents(http://www.web.com/images/.png):无法打开流:HTTP请求失败!在第10行的C:\ xampp \ htdocs \ auto.php中找不到HTTP / 1.1 404

答案 2 :(得分:0)

我找到了一个半解决方案:_

    <?php

$baseUrl = 'http://web.com/images';
$localDirectory = 'downloaded_images/';
$maxImageNumber = 400;
$input='image0';
$input2='big';
$extension ='.png';

for($imageNumber = 100; $imageNumber <= $maxImageNumber; $imageNumber++) {
    $fileData = file_get_contents($baseUrl . $input . $imageNumber . $input2 . $extension);
    file_put_contents($localDirectory . $imageNumber, $fileData);
}

?>

问题是...... 0001 0009 0010 !!我想告诉php&#34;嘿,总是4位&#34;