Starter 应用
私有存储上传
通过策略、套餐、配额、校验和与持久删除控制配置 S3 兼容私有上传。
已与启动模板提交
7d452a6同步。
将 STORAGE_PROVIDER 设为 s3、r2 或 minio,配置 bucket、region、endpoint 与凭据。对象保持私有,浏览器只获得短期预签名 URL。为 Web 来源和必要 PUT header 配置 CORS,除非供应商要求,否则不要启用 ACL。
上传契约
POST /api/storage/uploads检查组织成员、storage.uploadentitlement、策略(general、images、documents、verified)、类型,以及套餐/环境/策略三者中最小的大小上限,并原子预留组织配额。- 浏览器直接 PUT 到对象存储;上传器仅为显示进度而使用 XHR。
POST /api/storage/uploads/complete校验对象元数据和可选 SHA-256,再激活记录。GET /api/storage/files/[uuid]?download=1返回按组织限定的签名下载 URL。DELETE /api/storage/files/[uuid]软删除并安排持久storage_object_delete任务。
未完成上传一小时后释放预留。删除由任务队列重试,因此 cron 必须运行。对象 key 由服务生成,不能接受客户端自选 bucket key。
上线前测试完整流程、错误 MIME/checksum、配额竞争、过期 URL、跨组织访问、删除重试与清理。供应商 CORS 细节见模板 docs/storage-providers.md。