platform-vue/docs/七牛云上传测试步骤.md

202 lines
4.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 七牛云上传测试步骤
## 前置条件
1. 数据库配置已正确设置:
- `storage_type = 'qiniu'`
- `qiniu_region = 'z2'` (华南)
- `qiniu_bucket = 'yunzerwebsite'`
- `qiniu_domain = 'http://7colud.yunzer.cn'`
- `qiniu_access_key``qiniu_secret_key` 已配置
2. 前端依赖已安装:
- `qiniu-js@^3.4.4` ✓ (已在 package.json 中)
3. 后端服务已重启:
```bash
systemctl restart go-api
```
## 测试步骤
### 1. 登录系统
访问前端页面并登录:
- URL: https://platform.yunzer.cn
- 账号: hero920103
- 密码: 920103
### 2. 进入软件升级页面
导航到:平台管理 → 软件升级
### 3. 上传文件测试
点击"新增"或"编辑"按钮,在弹出的对话框中:
1. 点击"上传软件包"按钮
2. 选择一个文件(建议先用小文件测试,如 1-10MB
3. 观察上传进度条
4. 等待上传完成
### 4. 验证上传结果
#### 前端验证
- 检查是否显示上传成功消息
- 检查文件 URL 是否正确(应该是 `http://7colud.yunzer.cn/...`
- 检查文件是否可以预览/下载
#### 后端日志验证
```bash
tail -f /www/wwwroot/api.yunzer.cn/go.log
```
查看日志中是否有:
- `GET /platform/storage/config` - 获取存储配置
- `GET /platform/qiniu/token` - 获取上传凭证
- `POST /platform/qiniu/save` - 保存文件记录
#### 七牛云控制台验证
1. 登录七牛云控制台
2. 进入 `yunzerwebsite` 存储空间
3. 检查文件是否已上传
4. 文件路径格式应为:`2026/04/09/时间戳.扩展名`
#### 数据库验证
```sql
SELECT id, name, src, size, type, cate, md5, create_time
FROM system_file
ORDER BY id DESC
LIMIT 5;
```
检查:
- `src` 字段应该是完整的七牛云 URL
- `md5` 字段应该有值
- `size` 字段应该正确
## 预期结果
### 成功标志
1. 前端显示上传成功
2. 文件 URL 格式正确:`http://7colud.yunzer.cn/2026/04/09/xxxxx.ext`
3. 七牛云控制台能看到文件
4. 数据库有对应记录
5. 文件可以正常访问和下载
### 上传流程
```
前端 → 获取存储配置 (storageType: 'qiniu')
→ 获取上传凭证 (token, region: 'z2')
→ 直接上传到七牛云 (up-z2.qiniup.com)
→ 保存文件记录到数据库
→ 返回文件 URL
```
## 常见问题排查
### 问题 1: "incorrect region" 错误
**错误信息**:
```
xhr request failed, code: 400
response: {"error":"incorrect region, please use up-z2.qiniup.com, bucket is: yunzerwebsite"}
```
**原因**: 前端使用的区域与七牛云 bucket 实际区域不匹配
**解决**:
- 已修复:添加了 `getQiniuRegion()` 函数,根据后端返回的 region 动态设置
- 后端返回 `region: 'z2'`,前端会自动使用 `qiniu.region.z2`
### 问题 2: "获取上传凭证失败"
**可能原因**:
- 未登录或 token 过期
- 存储配置未设置为七牛云
- 七牛云配置不完整
**解决**:
1. 检查登录状态
2. 检查数据库 `system_storage_config`
3. 确认 AccessKey 和 SecretKey 正确
### 问题 3: 上传后文件无法访问
**可能原因**:
- 七牛云域名配置错误
- 域名未绑定或未备案
- 文件权限设置问题
**解决**:
1. 检查 `qiniu_domain` 配置
2. 登录七牛云控制台检查域名绑定
3. 检查存储空间访问权限(应为公开)
### 问题 4: 大文件上传失败
**可能原因**:
- 网络超时
- 浏览器限制
**解决**:
1. 七牛云 SDK 支持断点续传,会自动重试
2. 检查网络连接
3. 尝试分片上传SDK 自动处理)
## 性能测试
### 小文件测试 (< 10MB)
- 预期时间:几秒内完成
- 不会分片上传
### 中等文件测试 (10MB - 100MB)
- 预期时间:根据网速,通常 1-2 分钟
- 可能会分片上传
### 大文件测试 (> 100MB)
- 预期时间:根据网速
- 会自动分片上传
- 支持断点续传
## 对比测试
### 旧方案(服务器中转)
```
100MB 文件上传时间:
- 上传到服务器2 分钟
- 服务器上传到七牛云2 分钟
- 总计4 分钟
```
### 新方案(直传)
```
100MB 文件上传时间:
- 直接上传到七牛云2 分钟
- 总计2 分钟
```
**效率提升**: 50%
## 回滚方案
如果七牛云直传有问题,可以临时切换回本地存储:
```sql
UPDATE system_storage_config
SET storage_type = 'local'
WHERE id = 1;
```
前端会自动检测并使用本地上传方式(通过服务器中转)。
## 相关文件
- `platform/src/utils/qiniuUpload.js` - 上传工具(已添加 getQiniuRegion 函数)
- `go/controllers/qiniu_upload.go` - 后端控制器
- `platform/docs/七牛云直传配置.md` - 详细配置文档
## 更新日期
2026-04-09