202 lines
4.8 KiB
Markdown
202 lines
4.8 KiB
Markdown
# 七牛云上传测试步骤
|
||
|
||
## 前置条件
|
||
|
||
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
|