dootask/resources/ai-kb/zh/howto/system-setting/file-upload-limit.md
kuaifan 184fb27680 feat(upload): 分片上传统一链路,5 场景突破单文件 1G 限制
- 新增 api/upload/{init,chunk,merge} 入口与 ChunkUpload 模块(5MB 分片、3 并发、Redis 状态机)
- 5 场景接入:文件柜 / 聊天 / 任务附件 / 头像&系统图片 / 编辑器粘贴
- 秒传:同用户同 hash 复用 FileContent 物理文件,零传输
- 续传:Redis + localStorage 双索引,24h TTL
- 与老接口对齐:pid 锁、≤300 上限、webkit_relative_path 目录递归、overwrite 替换语义
- init 阶段读 file_upload_limit 拦截超限,避免传完分片才报错
- DeleteTmpTask 加 tmp_chunks case 兜底清理 24h 未合并目录
- files 表新增 hash 列(migration)
- 前端 chunkedUpload wrapper:主线程 spark-md5 流式 + 指数退避重试
- ai-kb 同步:upload / file-upload-limit / upload-size-limit 三个 chunk
2026-06-30 04:30:09 +00:00

2.5 KiB
Raw Permalink Blame History

id, title, type, feature, scope, locale, aliases, prerequisites, related_tools, related_pages, negative, last_verified
id title type feature scope locale aliases prerequisites related_tools related_pages negative last_verified
system-setting.file-upload-limit.howto 单文件上传大小限制 howto system-setting admin zh
上传文件大小限制
文件上传限制怎么改
file_upload_limit
文件最大多大
改上传上限
默认不限制
需要系统管理员权限
部署环境变量 SYSTEM_SETTING 不为 disabled
该限制只控制单个文件大小,不是磁盘配额或总量上限
留空 = 默认 1G前后端兜底一致填具体值后取该值仍受 PHP / Nginx 层服务级限制
不能按用户 / 部门设差异化阈值,全局生效
v1.8.45

单文件上传大小限制

入口

桌面端:左上角头像 →「系统设置」→「系统设置」标签 →「其他设置」→「文件上传限制」。

字段名:file_upload_limit,整数,单位 MB,默认留空(前端 placeholder 显示「默认 1G」

生效范围

后端 Base::upload / Base::uploadFromPath 在每次接收上传时都会读取该值,作用于:

  • 聊天消息中发送的文件 / 图片附件
  • 任务详情里的附件上传
  • 「文件」应用中的文档上传
  • 各种自定义上传入口(凡是走 Base::upload 的接口)

逻辑:调用方未显式传 size 参数时,先取 file_upload_limit;为空则按 1024 MB1G兜底;超过则报错 文件大小超限最大限制N KB

与分片上传的关系

  • 前端 ≥ 10MB 自动走分片上传(单分片 5MB跟系统设置的"单文件上限"是两件事
  • 提高 file_upload_limit 后,分片上传可以突破老的 1G 限制(每个分片远小于底层 PHP/Nginx/Swoole 限制)
  • 例如填 51205G5G 视频可通过分片上传完成(受磁盘 / 内存等部署能力约束)

字段默认值

字段 默认 单位
file_upload_limit 空(按 1G 兜底) MB

操作步骤

  1. 进入「系统设置」→「系统设置」→「其他设置」
  2. 在「文件上传限制」输入框填正整数(如 100 = 100MB或留空
  3. 「提交」保存,立即生效

不支持

  • 不区分图片 / 视频 / 文档:所有类型走同一阈值
  • 不能按文件后缀黑白名单(黑白名单走「文件设置」标签,不在这里)
  • 留空只是"应用层不限制",仍受 Nginx / PHP 等 web 服务器层面的上传上限制约