fastadmin框架素材一键迁移脚本

news/2024/10/22 4:15:13/
<?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";}
}
  1. 数据库连接:连接到 MySQL 数据库并查询所有图片地址。
  2. 提取日期目录和文件名:从 URL 中提取日期部分和文件名部分。
  3. 创建目录:如果目录不存在,则创建目录。
  4. 下载图片:使用 cURL 下载图片并保存到对应的目录中。

http://www.ppmy.cn/news/1540967.html

相关文章

Qt与下位机通信时,如何等待下位机回复和超时处理

在C或Qt中实现与下位机&#xff08;例如嵌入式设备、传感器等&#xff09;的通信&#xff0c;并且需要等待对方回复&#xff0c;如果几秒后没有收到回复则执行下一步动作&#xff0c;可以使用多种方法来实现这种超时机制。以下是几种常见的实现方式&#xff1a; 1. 使用 QTime…

机器人大功率主轴SycoTec 4060 ER-S汽车电机机芯焊缝铣削打磨加工

在汽车制造的精密领域&#xff0c;每一个细节都关乎着整车的性能与品质&#xff0c;而汽车电机机芯的焊缝加工更是其中至关重要的一环。在机器人末端加装德国进口电主轴 SycoTec 4060 ER-S&#xff0c;为汽车电机机芯焊缝铣削打磨加工带来全新的解决方案。 SycoTec 4060 ER-S转…

HarmonyOS中ArkUi框架中常用的装饰器

目录 1.装饰器 1&#xff09;Component 1--装饰内容 2&#xff09;Entry 1--装饰内容 2--使用说明 3&#xff09;Preview 1--装饰内容 2--使用说明 4&#xff09;CustomDialog 1--装饰内容 2--使用说明 5&#xff09;Observed 1--装饰内容 2--使用说明 6&#xff09;ObjectLin…

写了十几年程序,今天才第一天知道什么是屎山代码

可以说&#xff0c;我确实没在工作中用过Javascript&#xff0c;因为我从未见过如此“厚颜无耻”的代码 我曾经也是学过2~3年&#xff0c;还是JQuery的年代&#xff0c;但应该确实没在实战中用过&#xff0c;否则我怎么会不记得写过这些屎山代码的&#xff1f;&#xff1f;&…

【从零开始的LeetCode-算法】3194. 最小元素和最大元素的最小平均值

你有一个初始为空的浮点数数组 averages。另给你一个包含 n 个整数的数组 nums&#xff0c;其中 n 为偶数。 你需要重复以下步骤 n / 2 次&#xff1a; 从 nums 中移除 最小 的元素 minElement 和 最大 的元素 maxElement。将 (minElement maxElement) / 2 加入到 averages …

nginx中的HTTP 负载均衡

HTTP 负载均衡&#xff1a;如何实现多台服务器的高效分发 为了让流量均匀分配到两台或多台 HTTP 服务器上&#xff0c;我们可以通过 NGINX 的 upstream 代码块实现负载均衡。 方法 在 NGINX 的 HTTP 模块内使用 upstream 代码块对 HTTP 服务器实施负载均衡&#xff1a; upstr…

C语言头文件#ifndef条件编译用法

C语言中的头文件定义头 C语言里面经常看别人写的头文件&#xff1a; #ifndef C_CLIENT_H_ #define C_CLIENT_H_XXXX #endifXXX为真实的头内容&#xff0c;一直不大懂为何要加#ifndef C_CLIENT_H_这样的内容&#xff0c;其中C_CLIENT_H_大概是和自己的.h文件同名的一个大写标识…

025 elasticsearch索引管理-Java原生客户端

文章目录 pom.xml1创建索引2.创建索引并设置settings信息3.创建索引并设置mapping信息4.删除索引库5.给未设置mapping的索引设置mapping elasticsearch版本7.10.2&#xff0c;要求java客户端与之相匹配&#xff0c;推荐Springboot版本是2.3以上版本 依赖配置使用的是JUnit 5&am…