文件
yjyf/scripts/sync_all_goods_images.php
MiAn 5908cf6b16 chore(front): 删除静态商品图片及相关同步脚本逻辑
- 删除多个商品静态图片文件
- 移除同步脚本中对app静态目录的引用和复制逻辑
- 不再将商品图片同步至yjyf-app静态目录
2026-11-10 17:32:40 +08:00

56 行
1.9 KiB
PHP

<?php
define('APP_PATH', __DIR__ . '/../server/application/');
require __DIR__ . '/../server/thinkphp/base.php';
\think\App::initCommon();
use think\Loader;
Loader::addNamespace('Qcloud\Cos', __DIR__ . '/../server/addons/cos/library/Qcloud/Cos/');
Loader::addNamespace('GuzzleHttp\Command', __DIR__ . '/../server/addons/cos/library/Guzzle/command/src/');
Loader::addNamespace('GuzzleHttp\Command\Guzzle', __DIR__ . '/../server/addons/cos/library/Guzzle/guzzle-services/src/');
Loader::addNamespace('GuzzleHttp\UriTemplate', __DIR__ . '/../server/addons/cos/library/Guzzle/uri-template/src/');
$cosClient = new \Qcloud\Cos\Client([
'region' => 'ap-guangzhou',
'schema' => 'https',
'credentials' => [
'secretId' => 'AKIDxOo34sUu892lWFoEnFVYS9A58D84pa8X',
'secretKey' => 'IMDwjS5Xpwtc9WiV7dz95rTvHUbYJtSv'
]
]);
$localDir = __DIR__ . '/../server/public/uploads/goods';
$files = glob($localDir . '/*.jpg');
$map = [];
foreach ($files as $file) {
$filename = basename($file);
$name = pathinfo($filename, PATHINFO_FILENAME);
$cosKey = 'goods/' . $filename;
$body = file_get_contents($file);
try {
$cosClient->putObject([
'Bucket' => 'yjyf-1512102519',
'Key' => $cosKey,
'Body' => $body,
'ContentType' => 'image/jpeg'
]);
$cosUrl = 'https://yjyf-1512102519.cos.ap-guangzhou.myqcloud.com/' . $cosKey;
$map[$name] = [
'cos' => $cosUrl,
'local' => '/uploads/goods/' . $filename,
'static' => '/static/goods/' . $filename
];
echo "Uploaded {$filename} to COS -> {$cosUrl}\n";
} catch (\Throwable $e) {
echo "Error {$filename}: " . $e->getMessage() . "\n";
}
}
file_put_contents(__DIR__ . '/goods_images_map.json', json_encode($map, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE));
echo "All 31 real goods images synchronized to local, static and COS!\n";