# 立即执行:重启服务 ## 修复内容 ✅ 已修复日志错误(`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