Skip to content

上传与大文件

这一篇先告诉普通用户上传文件该注意什么,再给管理员讲背后的存储策略和分片机制。
两块内容是分开的,按你的角色看对应章节就行。

AsterDrive 不要求你手动选择上传方式——你只需要上传文件,系统会根据文件大小、当前工作空间和当前存储路线自动选择合适的处理方式。

普通用户先记住这几件事

  • 小文件通常会很快完成
  • 大文件通常会自动分片上传
  • 上传中断后,系统会尽量提示继续未完成的上传
  • 继续上传时,重新选择同一个文件即可
  • 可恢复上传有会话时效:普通分片通常是 24 小时,单次 Presigned 直传通常更短

日常使用时,你不需要分辨"普通上传""分片上传"还是"S3 直传"。

管理员部署前要准备什么

管理员真正需要提前想清楚的是:

  • 当前用户或团队绑定到了哪个策略组
  • 这个策略组会把文件分到哪条存储策略
  • 这条策略的单文件大小上限和分片大小是否合理
  • 服务器本地临时目录是否有足够空间
  • 如果用了反向代理,上传大小和超时是否足够
  • 如果用了 S3 / MinIO 直传,对象存储的浏览器跨站上传规则(CORS)是否已经配好
  • 如果用了远程节点,follower 是否有已应用的默认接收落点
  • 如果用了远程节点 Presigned 直传,浏览器是否能访问 follower 的 base_url

哪些上传会明显占用本地磁盘

并不是所有上传都会把整个文件先落到服务端本地磁盘。
最常见会明显占用本地临时目录的情况有:

  • 使用本地存储,尤其是需要分片组装时
  • 某些需要服务端参与处理的上传路径

管理员要重点关注这些目录的容量:

  • data/.tmp
  • data/.uploads

如果你使用 S3 / MinIO,最常见的两种方式

服务端流式中继

浏览器先把文件传给 AsterDrive,服务端再直接中继到 S3。
正常路径不落本地临时目录,也不会做内容去重。

Presigned 直传

浏览器直接把文件或分片上传到 S3 / MinIO。
这种方式通常最省服务端带宽,但对象存储必须提前配好浏览器上传所需的 CORS。 这里的 CORS,可以简单理解成“允许浏览器直接把文件传到对象存储”的放行规则。

如果你使用 Presigned 直传,建议确认对象存储的 CORS 至少满足:

  • 允许浏览器发起 PUT
  • 允许上传站点的来源
  • ExposeHeaders 里包含 ETag

上传失败时,先按这个顺序检查

  1. 当前工作空间是不是切对了
  2. 当前用户或团队绑定的是哪一个策略组
  3. 该策略组命中的存储策略单文件大小上限是否足够
  4. 反向代理的请求体大小和超时时间是否足够
  5. 如果走的是 S3 Presigned,对象存储的浏览器直传放行规则是否已经配置正确
  6. 如果走的是远程节点,远程节点是否启用、base_url 是否可达、默认接收落点是否已应用
  7. 用户或团队配额是否已经达到上限

什么时候应该改配置

如果用户经常上传大文件,管理员通常只需要关注这几处:

  • 管理 -> 存储策略 里的单文件大小上限和分片大小
  • 管理 -> 策略组 里的文件大小分流规则
  • 服务器本地临时目录的可用空间
  • 反向代理的上传大小和超时
  • S3 / MinIO 的浏览器直传放行规则
  • 远程节点的 base_url、默认接收落点和 follower 侧网络可达性

基于 MIT 许可证发布