想到的最简单的方法是创建一个 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
- 确保执行此代码的计算机可以访问远程服务器