PHP 将图片url,写入到文件夹中,导出到zip下载到桌面
一:将图片写入到文件内
文件url:比如 【https://image.baidu.com/search/detail?ct=503316480&z=0&ipn=false&word=%E5%9B%BE%E7%89%87%E5%A4%B4%E5%83%8F&hs=0&pn=1&spn=0&di=7466852183703552001&pi=0&rn=1&tn=baiduimagedetail&is=3775720047%2C2353259150&ie=utf-8&oe=utf-8&cl=2&lm=-1&cs=2052511577%2C1164310870&os=3775720047%2C2353259150&simid=3311344121%2C375144931&adpicid=0&lpn=0&ln=30&fr=ala&fm=&sme=&cg=head&bdtype=0&oriquery=%E5%9B%BE%E7%89%87%E5%A4%B4%E5%83%8F&objurl=https%3A%2F%2Fiknow-pic.cdn.bcebos.com%2Fbd3eb13533fa828b6d387b7def1f4134970a5a11&fromurl=ippr_z2C%24qAzdH3FAzdH3F4k1_z%26e3Bkwt17_z%26e3Bv54AzdH3Fgjofrw2jAzdH3F1wpwAzdH3F1pswg1tg2f7rj6%3Fgt1%3D1p_9bl8ccccln88cbamnmd&gsm=&islist=&querylist=&dyTabStr=MCwxMiwzLDEsMiwxMyw3LDYsNSw5】,
所有格式的图片都支持
$savePath = __DIR__ . "/../../runtime/logs/images"; // 确保此目录存在并且可写
foreach ($imageUrls as $imageUrl) {
$fileName = basename($imageUrl);
$saveFile = $savePath . '_' . $num;
$imageData = @file_get_contents($imageUrl);
if ($imageData !== false) {
file_put_contents($saveFile, $imageData);
echo "下载图片成功: $fileName" . PHP_EOL;
} else {
echo "下载图片成功失败: $imageUrl" . PHP_EOL;
}
$num++;
}
二:将刚才文件夹内的图片写入到zip文件内,
$zipFile = __DIR__ . '/../../runtime/logs/images/images.zip';
$zip = new \ZipArchive();
if ($zip->open($zipFile, \ZipArchive::CREATE | \ZipArchive::OVERWRITE) !== TRUE) {
echo "无法创建ZIP文件" . PHP_EOL;
exit;
}
$saveFiles = glob($savePath . '*', GLOB_BRACE);// 获取下面所有文件
if (empty($saveFiles)) {
echo "没有可下载的图片" . PHP_EOL;
exit;
}
foreach ($saveFiles as $file) {
if (is_file($file)) { // 确保只处理文件
$filename = basename($file);
if ($zip->addFile($file, $filename) === false) {
echo "无法添加文件 {$filename} 到 ZIP 文件" . PHP_EOL;
}
}
}
$zip->close();