#!/usr/bin/env node /** * 头像上传调试脚本 * 用于测试MinIO连接和文件上传策略 */ const fs = require('fs'); const path = require('path'); // 模拟环境变量 process.env.MINIO_HOST = 'localhost'; process.env.MINIO_PORT = '9000'; process.env.MINIO_USE_SSL = 'false'; process.env.MINIO_ACCESS_KEY = 'minioadmin'; process.env.MINIO_SECRET_KEY = 'minioadmin'; process.env.MINIO_BUCKET_NAME = 'd8dai'; // 测试MinIO连接 const { Client } = require('minio'); async function testMinIOConnection() { console.log('=== 测试MinIO连接 ==='); const minioClient = new Client({ endPoint: process.env.MINIO_HOST, port: parseInt(process.env.MINIO_PORT), useSSL: false, accessKey: process.env.MINIO_ACCESS_KEY, secretKey: process.env.MINIO_SECRET_KEY }); try { const exists = await minioClient.bucketExists(process.env.MINIO_BUCKET_NAME); console.log(`✅ MinIO连接成功,存储桶 ${process.env.MINIO_BUCKET_NAME} 存在: ${exists}`); if (!exists) { await minioClient.makeBucket(process.env.MINIO_BUCKET_NAME); console.log(`✅ 创建存储桶: ${process.env.MINIO_BUCKET_NAME}`); } return true; } catch (error) { console.error('❌ MinIO连接失败:', error.message); return false; } } // 测试上传策略API async function testUploadPolicyAPI() { console.log('\n=== 测试上传策略API ==='); try { const response = await fetch('http://localhost:8080/api/v1/files/upload-policy', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer test-token' // 注意:需要有效的token }, body: JSON.stringify({ filename: 'test-avatar.jpg', contentType: 'image/jpeg', size: 1024 }) }); console.log(`API响应状态: ${response.status}`); if (response.ok) { const data = await response.json(); console.log('✅ 上传策略获取成功:', JSON.stringify(data, null, 2)); } else { const error = await response.json(); console.error('❌ 上传策略获取失败:', error); } } catch (error) { console.error('❌ API测试失败:', error.message); } } // 主函数 async function main() { console.log('开始头像上传调试...\n'); const minioOk = await testMinIOConnection(); if (minioOk) { await testUploadPolicyAPI(); } console.log('\n=== 调试完成 ==='); } if (require.main === module) { main().catch(console.error); } module.exports = { testMinIOConnection, testUploadPolicyAPI };