feat: 新增OSS直传迁移能力,实现图片从本地到OSS的迁移流程
1. 新增OSS直传工具类函数,实现带凭据校验的PUT/HEAD请求 2. 新增oss_migration_log数据表,用于跟踪迁移状态 3. 重构图片保存逻辑,优先上传OSS失败则降级本地并登记补传任务 4. 新增批量迁移脚本,支持状态查看、断点续传、校验和回写DB 5. 新增OSS直链抽查调试脚本
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
// 抽查 OSS 直链是否可公共读:每个库取 1 条 oss_url 做 GET,打印状态码与字节数
|
||||
'use strict'
|
||||
const path = require('path')
|
||||
const https = require('https')
|
||||
const Database = require('better-sqlite3')
|
||||
|
||||
const db = new Database(path.resolve(__dirname, '..', '..', 'data', 'style_check.db'))
|
||||
const libs = ['item_images', 'wave', 'korean', 'x_fashion']
|
||||
|
||||
const get = (url) => new Promise((resolve, reject) => {
|
||||
https.get(url, res => {
|
||||
let n = 0
|
||||
res.on('data', c => { n += c.length })
|
||||
res.on('end', () => resolve({ status: res.statusCode, bytes: n }))
|
||||
}).on('error', reject)
|
||||
})
|
||||
|
||||
;(async () => {
|
||||
for (const lib of libs) {
|
||||
const r = db.prepare('SELECT local_path, oss_url FROM oss_migration_log WHERE lib=? LIMIT 1').get(lib)
|
||||
if (!r) { console.log(lib, '无记录'); continue }
|
||||
const res = await get(r.oss_url)
|
||||
console.log(`${lib} -> ${res.status} ${res.bytes} bytes ${r.oss_url}`)
|
||||
}
|
||||
db.close()
|
||||
})()
|
||||
Reference in New Issue
Block a user