<?php
// 需要迁移的数据库
$hostname = '127.0.0.1';
$database = 'fastadmin';
$username = 'fastadmin';
$password = 'fastadmin';
$hostport = 3306;
$prefix = 'fa_';
// 之前能访问的素材域名
$domain = 'https://fastadmin.xxxx.com';
// 连接数据库
$conn = new mysqli($hostname, $username, $password, $database, $hostport);
// 检查连接
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 查询图片地址
$sql = "SELECT url FROM {$prefix}attachment";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// 输出数据
while ($row = $result->fetch_assoc()) {
$url = $row['url'];
downloadImage($domain, $url);
}
} else {
echo "数据库中没有记录";
}
$conn->close();
/**
* 下载图片并保存到对应目录
*
* @param string $domain 域名
* @param string $url 图片路径
*/
function downloadImage($domain, $url)
{
// 拼接完整的图片 URL
$fullUrl = $domain . $url;
// 提取日期目录和文件名
$pathParts = explode('/', $url);
$dateDir = $pathParts[2]; // 日期目录部分
$fileName = end($pathParts); // 文件名部分
// 创建保存目录
$saveDir = __DIR__ . "/uploads/{$dateDir}";
if (!file_exists($saveDir)) {
mkdir($saveDir, 0755, true);
}
// 保存文件路径
$savePath = "{$saveDir}/{$fileName}";
// 使用 cURL 下载图片
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $fullUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$data = curl_exec($ch);
curl_close($ch);
// 保存图片数据到文件
if ($data) {
file_put_contents($savePath, $data);
echo "下载成功: {$savePath}\n";
} else {
echo "下载失败: {$fullUrl}\n";
}
}
- 数据库连接:连接到 MySQL 数据库并查询所有图片地址。
- 提取日期目录和文件名:从 URL 中提取日期部分和文件名部分。
- 创建目录:如果目录不存在,则创建目录。
- 下载图片:使用 cURL 下载图片并保存到对应的目录中。