# 文件上传超时配置说明

## 修改内容

移除了文件上传的超时限制，并增加了文件大小限制，允许大文件（如软件安装包）上传完成而不会因超时或大小限制中断。

## 前端修改

### 修改位置
`platform/src/api/file.js` 中的 `uploadFile` 函数

### 修改详情

#### 修改前
```javascript
const config = {
  url: "/platform/uploadfile",
  method: "post",
  data: formData,
  timeout: 2 * 60 * 60 * 1000, // 2小时超时
};
```

#### 修改后
```javascript
const config = {
  url: "/platform/uploadfile",
  method: "post",
  data: formData,
  timeout: 0, // 不设置超时时间，等待文件上传完毕
};
```

## 后端修改

### 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` 函数的文件上传功能，包括但不限于：

- 软件升级安装包上传 (`platform/src/views/platform/softwareupgrade/components/edit.vue`)
- 文件管理器上传 (`platform/src/views/system/fileManager/index.vue`)
- 其他调用 `uploadFile` API 的组件

## 技术说明

### 前端
- `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. 修改后需要重启 Go 后端服务才能生效
2. 对于超大文件（>2GB），建议考虑使用分片上传或断点续传机制
3. 生产环境建议配置 Nginx 等反向代理的超时和大小限制
4. 监控服务器磁盘空间，确保有足够空间存储大文件

## 相关文件

### 前端
- `platform/src/api/file.js` - 文件上传 API
- `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
