219 lines
4.1 KiB
Markdown
219 lines
4.1 KiB
Markdown
# 立即执行:重启服务
|
||
|
||
## 修复内容
|
||
|
||
✅ 已修复日志错误(`beego.Info` → `fmt.Println`)
|
||
✅ 已启用 `CopyRequestBody` 配置
|
||
✅ 已添加调试输出
|
||
|
||
## 立即执行
|
||
|
||
### 1. 重启服务
|
||
|
||
```bash
|
||
systemctl restart go-api
|
||
```
|
||
|
||
### 2. 检查服务状态
|
||
|
||
```bash
|
||
systemctl status go-api
|
||
```
|
||
|
||
**预期输出**:
|
||
```
|
||
● go-api.service - Go API Server
|
||
Active: active (running)
|
||
```
|
||
|
||
如果显示 `failed`,查看错误:
|
||
```bash
|
||
journalctl -u go-api -n 50
|
||
```
|
||
|
||
### 3. 查看实时日志
|
||
|
||
```bash
|
||
tail -f /www/wwwroot/api.yunzer.cn/go.log
|
||
```
|
||
|
||
或者查看标准输出(调试日志会输出到这里):
|
||
```bash
|
||
journalctl -u go-api -f
|
||
```
|
||
|
||
### 4. 测试上传
|
||
|
||
1. 打开浏览器,登录系统
|
||
2. 进入:平台管理 → 软件升级
|
||
3. 点击"新增"或"编辑"
|
||
4. 上传一个文件(建议先用小文件测试)
|
||
|
||
### 5. 观察日志
|
||
|
||
在终端中应该看到:
|
||
|
||
```
|
||
SaveFileRecord 请求体长度: 150
|
||
SaveFileRecord 请求体内容: {"key":"2026/04/09/1775732976777726699.exe","hash":"loozoz7qv9flWXsS5UldWdPX9-T_","size":60742452,"name":"xxx.exe","mimeType":"application/x-msdownload","cate":0}
|
||
```
|
||
|
||
### 6. 验证结果
|
||
|
||
**前端应该显示**:
|
||
- 上传进度条
|
||
- 上传成功提示
|
||
- 文件 URL: `http://7colud.yunzer.cn/2026/04/09/xxxxx.exe`
|
||
|
||
**数据库验证**:
|
||
```bash
|
||
mysql -u go-platform -p -h 212.64.112.158 -P 3388 go-platform
|
||
```
|
||
|
||
```sql
|
||
SELECT id, name, src, size, type, create_time
|
||
FROM system_file
|
||
ORDER BY id DESC
|
||
LIMIT 5;
|
||
```
|
||
|
||
## 完整上传流程
|
||
|
||
```
|
||
用户选择文件
|
||
↓
|
||
前端获取存储配置
|
||
storageType: 'qiniu'
|
||
↓
|
||
前端获取上传凭证
|
||
token, region: 'z2'
|
||
↓
|
||
前端直接上传到七牛云
|
||
POST https://upload-z2.qiniup.com
|
||
✓ 成功返回: {key, hash, size}
|
||
↓
|
||
前端保存文件记录
|
||
POST /platform/qiniu/save
|
||
Body: {key, hash, size, name, mimeType, cate}
|
||
↓
|
||
后端接收请求
|
||
✓ CopyRequestBody 已启用
|
||
✓ 请求体不为空
|
||
↓
|
||
后端保存到数据库
|
||
INSERT INTO system_file
|
||
↓
|
||
返回文件信息
|
||
{url, id, name, key}
|
||
↓
|
||
前端显示上传成功
|
||
```
|
||
|
||
## 如果还是失败
|
||
|
||
### 问题 1: 服务启动失败
|
||
|
||
**检查**:
|
||
```bash
|
||
journalctl -u go-api -n 50
|
||
```
|
||
|
||
**常见原因**:
|
||
- 端口被占用
|
||
- 数据库连接失败
|
||
- 配置文件错误
|
||
|
||
### 问题 2: 请求体仍然为空
|
||
|
||
**检查**:
|
||
1. 确认服务已重启
|
||
2. 查看日志中是否有 "请求体长度: 0"
|
||
3. 检查前端请求的 Content-Type 是否为 `application/json`
|
||
|
||
**解决**:
|
||
```bash
|
||
# 确保配置生效
|
||
grep -i "copyrequestbody" /www/wwwroot/api.yunzer.cn/conf/app.conf
|
||
|
||
# 应该看到
|
||
copyrequestbody = true
|
||
```
|
||
|
||
### 问题 3: 七牛云上传失败
|
||
|
||
**检查**:
|
||
- 浏览器控制台是否有 CORS 错误
|
||
- 七牛云 bucket 是否存在
|
||
- 区域配置是否正确(z2)
|
||
|
||
**解决**:
|
||
参见 `platform/docs/七牛云上传测试步骤.md`
|
||
|
||
## 调试技巧
|
||
|
||
### 1. 查看完整请求
|
||
|
||
浏览器开发者工具 → Network 标签 → 找到 `/platform/qiniu/save` 请求:
|
||
- Headers: 查看 Content-Type
|
||
- Payload: 查看请求体内容
|
||
- Response: 查看响应内容
|
||
|
||
### 2. 查看后端日志
|
||
|
||
```bash
|
||
# 实时日志
|
||
tail -f /www/wwwroot/api.yunzer.cn/go.log
|
||
|
||
# 或者查看 systemd 日志(包含 fmt.Println 输出)
|
||
journalctl -u go-api -f
|
||
```
|
||
|
||
### 3. 测试 API
|
||
|
||
使用 curl 测试:
|
||
```bash
|
||
# 获取 token(先登录)
|
||
TOKEN="your_token_here"
|
||
|
||
# 测试保存接口
|
||
curl -X POST https://api.yunzer.cn/platform/qiniu/save \
|
||
-H "Authorization: Bearer $TOKEN" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"key": "test/test.txt",
|
||
"hash": "test123",
|
||
"size": 1024,
|
||
"name": "test.txt",
|
||
"mimeType": "text/plain",
|
||
"cate": 0
|
||
}'
|
||
```
|
||
|
||
## 成功标志
|
||
|
||
✓ 服务启动成功
|
||
✓ 日志中看到请求体内容
|
||
✓ 前端显示上传成功
|
||
✓ 数据库有新记录
|
||
✓ 文件 URL 可以访问
|
||
|
||
## 下一步
|
||
|
||
上传成功后,可以:
|
||
1. 移除调试日志(`fmt.Println`)
|
||
2. 测试大文件上传
|
||
3. 测试批量上传
|
||
4. 验证文件去重功能
|
||
|
||
## 联系支持
|
||
|
||
如果问题仍然存在,请提供:
|
||
1. 服务状态输出
|
||
2. 完整的错误日志
|
||
3. 浏览器控制台截图
|
||
4. 请求和响应的详细信息
|
||
|
||
## 更新时间
|
||
|
||
2026-04-09
|