verify-key.cjs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // 验证 id=1 的 key 是否在 OSS 上 + 调试脚本
  2. const fs = require('fs');
  3. const path = require('path');
  4. const envTxt = fs.readFileSync(path.join(__dirname, '..', '..', 'server', '.env'), 'utf8');
  5. const env = {};
  6. for (const line of envTxt.split(/\r?\n/)) {
  7. const m = line.match(/^\s*([A-Z0-9_]+)\s*=\s*(.*)\s*$/);
  8. if (m) env[m[1]] = m[2].replace(/^["']|["']$/g, '');
  9. }
  10. const OSS = require('ali-oss');
  11. const c = new OSS({
  12. accessKeyId: env.OSS_ACCESS_KEY_ID,
  13. accessKeySecret: env.OSS_ACCESS_KEY_SECRET,
  14. bucket: 'rrbrr-book-audio',
  15. endpoint: 'oss-cn-shanghai.aliyuncs.com',
  16. secure: true,
  17. });
  18. (async () => {
  19. const k = 'audio/5239bdd1-5ca6-496b-9291-9daf950a91d5/output.mp3';
  20. try {
  21. const r = await c.head(k);
  22. console.log('✅ key 存在:', k, ' size:', r.headers && r.headers['content-length']);
  23. } catch (e) {
  24. console.log('❌ key 不存在:', k, ' code:', e.code);
  25. }
  26. // 同时列全 OSS 找该 key
  27. const all = [];
  28. let marker = null;
  29. do {
  30. const r = await c.list({ prefix: 'audio/', 'max-keys': 1000, marker });
  31. all.push(...(r.objects || []));
  32. marker = r.nextMarker || null;
  33. } while (marker);
  34. console.log('OSS 总文件数:', all.length);
  35. const found = all.find(o => o.name === k);
  36. console.log('直接查找结果:', found ? 'FOUND size=' + found.size : 'NOT FOUND');
  37. // 模糊查找
  38. const match = all.filter(o => o.name.includes('5239bdd1'));
  39. console.log('5239bdd1 模糊匹配:', match.length, '条');
  40. for (const o of match) console.log(' ', o.name, o.size);
  41. })();