解决超时问题

This commit is contained in:
李志强 2026-04-09 17:08:02 +08:00
parent f3e6747341
commit b903cabefb
2 changed files with 81 additions and 9 deletions

View File

@ -11,6 +11,8 @@
- [获取缓存数据](./获取缓存数据.md)
- [调用图片上传组件](./调用图片上传组件.md)
- [一键复制](./一键复制.md)
- [文件上传超时配置](./文件上传超时配置.md) - 大文件上传配置说明
- [图片URL处理说明](./图片URL处理说明.md) - 图片URL拼接处理
### 存储配置功能
存储配置功能的前端实现已完成,包括:
@ -66,6 +68,12 @@ platform/
## 📝 更新日志
### 2026-04-09
- ✅ 移除文件上传超时限制
- ✅ 支持大文件上传(配合后端 2GB 限制)
- ✅ 修复图片 URL 重复拼接问题
- ✅ 完善文件上传文档
### 2024-01-01
- ✅ 完成存储配置界面
- ✅ 支持本地存储和七牛云存储配置

View File

@ -2,15 +2,16 @@
## 修改内容
移除了文件上传的超时限制,允许大文件上传完成而不会因超时中断。
移除了文件上传的超时限制,并增加了文件大小限制,允许大文件(如软件安装包)上传完成而不会因超时或大小限制中断。
## 修改位置
## 前端修改
### 修改位置
`platform/src/api/file.js` 中的 `uploadFile` 函数
## 修改详情
### 修改详情
### 修改前
#### 修改前
```javascript
const config = {
url: "/platform/uploadfile",
@ -20,7 +21,7 @@ const config = {
};
```
### 修改后
#### 修改后
```javascript
const config = {
url: "/platform/uploadfile",
@ -30,6 +31,41 @@ const config = {
};
```
## 后端修改
### 1. 文件大小限制调整
#### 修改位置
`go/controllers/platform_file.go`
#### 修改详情
##### 修改前
```go
const fileUploadMaxMB = 200 // 200MB
const fileUploadMaxBytes = fileUploadMaxMB * 1024 * 1024
```
##### 修改后
```go
const fileUploadMaxMB = 2048 // 2GB适用于大型软件安装包
const fileUploadMaxBytes = fileUploadMaxMB * 1024 * 1024
```
### 2. 服务器超时配置
#### 修改位置
`go/conf/app.conf`
#### 新增配置
```ini
# 服务器超时配置(支持大文件上传)
# 0 表示不设置超时限制
ServerTimeOut = 0
# 最大请求体大小字节0 表示不限制
MaxMemory = 0
```
## 影响范围
此修改影响所有使用 `uploadFile` 函数的文件上传功能,包括但不限于:
@ -40,23 +76,51 @@ const config = {
## 技术说明
### 前端
- `timeout: 0` 在 axios 中表示不设置超时限制
- 上传进度仍然会正常显示(通过 `onUploadProgress` 回调)
- 用户可以随时取消上传操作
### 后端
- 文件大小限制从 200MB 提升到 2GB
- `ServerTimeOut = 0` 表示服务器不设置请求超时
- `MaxMemory = 0` 表示不限制请求体大小
- 适用于大文件(如软件安装包)的上传场景
## CORS 问题说明
如果遇到 CORS 错误,请确认:
1. 后端 `go/routers/router.go` 中已配置 CORS 中间件
2. 允许的请求头包含 `Authorization`
3. 生产环境中,需要将 `Access-Control-Allow-Origin` 设置为具体的前端域名
当前配置:
```go
ctx.Output.Header("Access-Control-Allow-Origin", "*")
ctx.Output.Header("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, PATCH, OPTIONS")
ctx.Output.Header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization")
```
## 注意事项
1. 虽然客户端不设置超时,但服务器端可能仍有超时限制
2. 建议在服务器端Go 后端)也检查并调整相应的超时配置
3. 对于超大文件,建议考虑使用分片上传或断点续传机制
1. 修改后需要重启 Go 后端服务才能生效
2. 对于超大文件(>2GB建议考虑使用分片上传或断点续传机制
3. 生产环境建议配置 Nginx 等反向代理的超时和大小限制
4. 监控服务器磁盘空间,确保有足够空间存储大文件
## 相关文件
### 前端
- `platform/src/api/file.js` - 文件上传 API
- `platform/src/utils/request.js` - axios 请求配置(普通接口默认 5 分钟超时)
- `platform/src/utils/request.js` - axios 请求配置
- `platform/src/views/platform/softwareupgrade/components/edit.vue` - 软件升级上传组件
### 后端
- `go/controllers/platform_file.go` - 文件上传控制器
- `go/conf/app.conf` - 服务器配置
- `go/routers/router.go` - CORS 配置
## 修改日期
2026-04-09