/** * OSS 上传下载完整性测试 * * 测试流程: * 1. 读取本地 PDF 文件 * 2. 上传到 OSS * 3. 从 OSS 下载 * 4. 比较 MD5 值 */ require('dotenv').config(); const fs = require('fs'); const crypto = require('crypto'); const OSS = require('ali-oss'); const testFile = 'D:\\MyCursor\\AIclinicalresearch\\docs\\06-测试文档\\近红外光谱(NIRS)队列研究举例.pdf'; const testKey = 'test/oss-integrity-test.pdf'; async function main() { console.log('='.repeat(60)); console.log('OSS Upload/Download Integrity Test'); console.log('='.repeat(60)); // 1. 读取本地文件 console.log('\n[1] Reading local file...'); const localBuffer = fs.readFileSync(testFile); const localMd5 = crypto.createHash('md5').update(localBuffer).digest('hex'); console.log(` File size: ${localBuffer.length} bytes`); console.log(` MD5: ${localMd5}`); console.log(` First 20 bytes: ${localBuffer.slice(0, 20).toString('hex')}`); // 2. 创建 OSS 客户端 console.log('\n[2] Creating OSS client...'); const client = new OSS({ region: process.env.OSS_REGION, bucket: process.env.OSS_BUCKET, accessKeyId: process.env.OSS_ACCESS_KEY_ID, accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET, endpoint: `${process.env.OSS_REGION}.aliyuncs.com`, secure: true, }); console.log(` Region: ${process.env.OSS_REGION}`); console.log(` Bucket: ${process.env.OSS_BUCKET}`); // 3. 上传到 OSS console.log('\n[3] Uploading to OSS...'); try { const uploadResult = await client.put(testKey, localBuffer, { headers: { 'Content-Type': 'application/pdf', }, }); console.log(` Upload success: ${uploadResult.name}`); } catch (error) { console.error(` Upload failed:`, error.message); return; } // 4. 从 OSS 下载 console.log('\n[4] Downloading from OSS...'); try { const downloadResult = await client.get(testKey); const downloadBuffer = downloadResult.content; const downloadMd5 = crypto.createHash('md5').update(downloadBuffer).digest('hex'); console.log(` Download size: ${downloadBuffer.length} bytes`); console.log(` MD5: ${downloadMd5}`); console.log(` First 20 bytes: ${downloadBuffer.slice(0, 20).toString('hex')}`); // 5. 比较 console.log('\n[5] Comparing...'); if (localMd5 === downloadMd5) { console.log(' ✅ MD5 MATCH - File integrity OK!'); } else { console.log(' ❌ MD5 MISMATCH - File corrupted!'); console.log(` Local: ${localMd5}`); console.log(` Download: ${downloadMd5}`); } // 保存下载的文件用于对比 const outputPath = 'D:\\MyCursor\\AIclinicalresearch\\docs\\06-测试文档\\oss-downloaded-test.pdf'; fs.writeFileSync(outputPath, downloadBuffer); console.log(`\n Downloaded file saved to: ${outputPath}`); } catch (error) { console.error(` Download failed:`, error.message); return; } // 6. 清理 console.log('\n[6] Cleanup...'); try { await client.delete(testKey); console.log(' Test file deleted from OSS'); } catch (error) { console.log(` Cleanup failed: ${error.message}`); } console.log('\n' + '='.repeat(60)); console.log('Test Complete!'); console.log('='.repeat(60)); } main().catch(console.error);