debug-avatar-upload.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #!/usr/bin/env node
  2. /**
  3. * 头像上传调试脚本
  4. * 用于测试MinIO连接和文件上传策略
  5. */
  6. const fs = require('fs');
  7. const path = require('path');
  8. // 模拟环境变量
  9. process.env.MINIO_HOST = 'localhost';
  10. process.env.MINIO_PORT = '9000';
  11. process.env.MINIO_USE_SSL = 'false';
  12. process.env.MINIO_ACCESS_KEY = 'minioadmin';
  13. process.env.MINIO_SECRET_KEY = 'minioadmin';
  14. process.env.MINIO_BUCKET_NAME = 'd8dai';
  15. // 测试MinIO连接
  16. const { Client } = require('minio');
  17. async function testMinIOConnection() {
  18. console.log('=== 测试MinIO连接 ===');
  19. const minioClient = new Client({
  20. endPoint: process.env.MINIO_HOST,
  21. port: parseInt(process.env.MINIO_PORT),
  22. useSSL: false,
  23. accessKey: process.env.MINIO_ACCESS_KEY,
  24. secretKey: process.env.MINIO_SECRET_KEY
  25. });
  26. try {
  27. const exists = await minioClient.bucketExists(process.env.MINIO_BUCKET_NAME);
  28. console.log(`✅ MinIO连接成功,存储桶 ${process.env.MINIO_BUCKET_NAME} 存在: ${exists}`);
  29. if (!exists) {
  30. await minioClient.makeBucket(process.env.MINIO_BUCKET_NAME);
  31. console.log(`✅ 创建存储桶: ${process.env.MINIO_BUCKET_NAME}`);
  32. }
  33. return true;
  34. } catch (error) {
  35. console.error('❌ MinIO连接失败:', error.message);
  36. return false;
  37. }
  38. }
  39. // 测试上传策略API
  40. async function testUploadPolicyAPI() {
  41. console.log('\n=== 测试上传策略API ===');
  42. try {
  43. const response = await fetch('http://localhost:8080/api/v1/files/upload-policy', {
  44. method: 'POST',
  45. headers: {
  46. 'Content-Type': 'application/json',
  47. 'Authorization': 'Bearer test-token' // 注意:需要有效的token
  48. },
  49. body: JSON.stringify({
  50. filename: 'test-avatar.jpg',
  51. contentType: 'image/jpeg',
  52. size: 1024
  53. })
  54. });
  55. console.log(`API响应状态: ${response.status}`);
  56. if (response.ok) {
  57. const data = await response.json();
  58. console.log('✅ 上传策略获取成功:', JSON.stringify(data, null, 2));
  59. } else {
  60. const error = await response.json();
  61. console.error('❌ 上传策略获取失败:', error);
  62. }
  63. } catch (error) {
  64. console.error('❌ API测试失败:', error.message);
  65. }
  66. }
  67. // 主函数
  68. async function main() {
  69. console.log('开始头像上传调试...\n');
  70. const minioOk = await testMinIOConnection();
  71. if (minioOk) {
  72. await testUploadPolicyAPI();
  73. }
  74. console.log('\n=== 调试完成 ===');
  75. }
  76. if (require.main === module) {
  77. main().catch(console.error);
  78. }
  79. module.exports = { testMinIOConnection, testUploadPolicyAPI };