Skip to content

上传与存储

上传与存储负责把“浏览器或客户端传来的文件”变成“数据库文件记录 + 存储驱动里的对象”。它也是最容易受反向代理、CORS、对象存储和远程节点影响的功能域。

能力边界

能力说明相关文档
直传小文件小文件直接 POST 到 primary,由服务端写入目标存储上传与大文件
分片上传本地分片会话、进度查询、断点续传和 24h session TTL上传与大文件
对象存储预签名上传浏览器直接 PUT 到 S3-compatible、Azure Blob SAS URL 或腾讯云 COS,服务端最终校验并落账上传与大文件存储策略
对象存储 multipart浏览器分批上传 part,服务端 complete 后校验内容上传与大文件S3 / MinIO / R2Azure Blob Storage腾讯云 COS
Microsoft Graph 存储通过管理员授权把文件写入 OneDrive、SharePoint site drive 或 Microsoft 365 group driveOneDrive存储策略
SFTP 存储通过服务端流式读写把文件写到 SSH/SFTP 文件服务器SFTP存储策略
存储策略决定文件最终写到 local、s3、sftp、azure_blob、tencent_cos、one_drive 或 remote存储策略
策略组按用户、团队和文件大小分流到不同存储策略存储策略
远程节点存储primary 把对象写到 follower,再由 follower 写本地或 S3远程节点接入远程节点存储策略

后端模块

模块负责内容
files::upload上传会话、分片、进度、状态转换
workspace::storage_coreBlob 去重、文件记录、配额、策略选择和最终落账
storage_policy::policy存储策略、策略组和规则
storage::traitsstorage::driversstorage::connectorsStorageDriverStorageConnector 抽象、本地、S3-compatible、SFTP、Azure Blob、Tencent COS、OneDrive 和 remote 驱动
storage::remote_protocolprimary/follower 内部远程存储协议
remote::remote_noderemote::storage_target远程节点和接收落点
task::storage_migration存储迁移任务

关键边界

  • 配额检查有事务外 fast-fail 和事务内权威校验两层。
  • 文件名唯一性、Blob 引用计数和 session 状态转换都必须用 repo 层原子辅助函数。
  • presigned 能否工作取决于浏览器能否访问对象存储或 follower base_url,不是只看 primary 能不能连通。
  • 后台连接测试只证明 AsterDrive 服务端能连到目标后端;presigned 上传 / 下载还要另外确认浏览器到对象存储、Azure Blob 或 follower 的网络和 CORS。
  • SFTP 是服务端流式后端,重点是 Endpoint、SSH 凭据、基础路径和主机密钥指纹,不涉及浏览器 CORS 或预签名 URL。
  • 远程节点 reverse_tunnel 适合 relay_stream,不适合浏览器直连的 presigned

排障方向

  • 小文件能传,大文件失败:看反向代理大小、超时、临时目录和分片大小。
  • relay_stream 成功、presigned 失败:优先看 CORS、浏览器网络和 endpoint 可达性。
  • 连接测试失败:优先看后台返回的诊断信息;存储类诊断会出现在标准错误响应的 error.diagnostic.message 里。
  • 远程节点策略失败:先看节点启用状态、传输方式、默认接收落点和协议能力。
  • 容量或 Blob 引用异常:用 运维 CLI 深度检查。

基于 MIT 许可证发布