AVATAR_UPLOAD_FIX.md 2.3 KB

头像上传问题修复指南

问题描述

头像上传失败,错误信息为"获取上传策略失败"。

问题根因分析

经过排查,发现以下问题:

  1. 环境变量缺失 - 缺少MinIO连接配置
  2. 认证令牌问题 - Axios适配器未包含认证令牌
  3. 服务端配置 - 需要正确配置MinIO连接

修复步骤

1. 环境变量配置

已创建 .env 文件,包含完整的MinIO配置:

# MinIO配置
MINIO_HOST=localhost
MINIO_PORT=9000
MINIO_USE_SSL=false
MINIO_ACCESS_KEY=minioadmin
MINIO_SECRET_KEY=minioadmin
MINIO_BUCKET_NAME=d8dai

2. Axios适配器修复

已更新 src/client/utils/axios.ts,添加认证令牌支持:

// 添加认证令牌
const token = localStorage.getItem('token');
if (token) {
  headers['Authorization'] = `Bearer ${token}`;
}

3. 启动脚本

使用 start-dev.sh 脚本启动开发环境:

./start-dev.sh

4. 验证服务状态

确保所有服务正常运行:

  • MinIO: http://localhost:9000 (用户: minioadmin, 密码: minioadmin)
  • MySQL: localhost:3306
  • Redis: localhost:6379

测试方法

手动测试上传策略API

# 获取上传策略(需要先登录获取token)
curl -X POST http://localhost:8080/api/v1/files/upload-policy \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_TOKEN_HERE" \
  -d '{"filename":"test.jpg","contentType":"image/jpeg","size":1024}'

使用调试脚本

node debug-avatar-upload.js

常见错误处理

1. MinIO连接失败

  • 检查MinIO服务是否运行:docker-compose up minio
  • 验证端口是否开放:访问 http://localhost:9000
  • 检查环境变量配置是否正确

2. 认证失败

  • 确保已登录并获取有效token
  • 检查token是否正确存储在localStorage中
  • 验证token格式:Bearer + 空格 + token

3. 存储桶不存在

  • MinIO会自动创建配置的存储桶
  • 手动创建:docker-compose exec minio mc mb local/d8dai

验证步骤

  1. 启动所有服务:docker-compose up -d
  2. 启动应用:./start-dev.sh
  3. 登录系统获取token
  4. 尝试头像上传
  5. 检查MinIO控制台查看上传的文件

成功标志

  • 头像上传成功
  • MinIO控制台能看到上传的头像文件
  • 用户头像URL能正常访问