存储桶与对象模型:对象存储的基本概念 要使用 Storage,先要理解对象存储(Object Storage)的思维方式,它与传统文件系统、与数据库表都不相同。本节讲清存储桶、对象、路径组织等基本概念。 什么是对象存储 对象存储是一种专门为「海量文件」设计的存储模型。它不关心文件内部的层次结构,而是把每个文件(称为「对象」)连同其元信息,统一存放在扁平的命名空间里。它的特点是: 面向海量数据:适合存储数量极多、体积各异的文件。 通过 HTTP 访问:每个对象都有唯一的访问地址,天然适合 Web 与移动端。 高可用与可扩展:存储层自动冗余、弹性扩展,无需运维。 Supabase Storage 提供的对象存储兼容业界 S3 标准,这意味着你积累的经验可迁移到其他兼容对象存储的场景。
要使用 Storage,先要理解对象存储(Object Storage)的思维方式,它与传统文件系统、与数据库表都不相同。本节讲清存储桶、对象、路径组织等基本概念。
对象存储是一种专门为「海量文件」设计的存储模型。它不关心文件内部的层次结构,而是把每个文件(称为「对象」)连同其元信息,统一存放在扁平的命名空间里。它的特点是:
Supabase Storage 提供的对象存储兼容业界 S3 标准,这意味着你积累的经验可迁移到其他兼容对象存储的场景。
存储桶是对象的顶层容器,可类比为「一个大文件夹」或「一个独立的存储空间」。一个项目下可以创建多个存储桶,每个桶有自己的:
典型用桶方式:按用途或权限边界划分。例如:
public-assets:存放头像、封面等任何人可访问的文件。user-uploads:存放用户私人文档,需授权才能访问。这是桶最重要的属性,决定了访问控制的基本模式:
选择原则:默认用私有桶,只在「确实希望任何人都能访问」时才用公开桶。误把私有内容放进公开桶,是常见的安全事故。
对象是存储的基本单元,对应一个具体的文件(如一张图片)。每个对象包含:
users/uuid/avatar.png。注意:对象存储本质上是扁平的,没有真正的「文件夹」概念。路径中的斜杠只是键名的一部分,所谓的「文件夹」是客户端为了组织方便而模拟出来的视觉层级。
虽然没有真正的文件夹,但通过合理的路径命名,可以清晰地组织文件并支持按前缀查询。常见模式:
users/{用户id}/avatar.png、users/{用户id}/documents/...。把用户 id 作为路径前缀,天然与权限模型对应。images/2026/07/xxx.png、invoices/2026/xxx.pdf,便于归档与批量处理。把「归属」信息编码进路径,是与第 5 章 RLS 配合、实现「用户只能访问自己文件」的关键(见第 4 节)。
对象自带的元信息(大小、类型、路径)是基本的,而业务往往需要更多属性(如「这张图片是哪个业务的」「审核状态如何」)。常见做法:
files 表,含路径、所有者、用途、审核状态等)。这样把「文件存储」与「业务元数据」分离,既享受对象存储的扩展性,又拥有关系型数据库的查询能力。
为防止滥用,桶可配置:
这些约束是存储安全与成本控制的第一道防线。
对象存储以「桶 + 对象 + 路径」组织文件:桶分公开与私有,对象是文件本身,路径用于组织与归属编码。理解这套模型,下一节我们就能进入文件上传、下载与管理的实操。