diff --git a/docs/README.md b/docs/README.md index cad5a5e..dc472ff 100644 --- a/docs/README.md +++ b/docs/README.md @@ -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 - ✅ 完成存储配置界面 - ✅ 支持本地存储和七牛云存储配置 diff --git a/docs/文件上传超时配置.md b/docs/文件上传超时配置.md index f46a792..91e4fb2 100644 --- a/docs/文件上传超时配置.md +++ b/docs/文件上传超时配置.md @@ -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