0f8fe2c2e2
1. 新增OSS直传工具类函数,实现带凭据校验的PUT/HEAD请求 2. 新增oss_migration_log数据表,用于跟踪迁移状态 3. 重构图片保存逻辑,优先上传OSS失败则降级本地并登记补传任务 4. 新增批量迁移脚本,支持状态查看、断点续传、校验和回写DB 5. 新增OSS直链抽查调试脚本
27 lines
952 B
JavaScript
27 lines
952 B
JavaScript
// 抽查 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()
|
|
})()
|