内功篇Paid
7、文件存储 (Storage)
上一节,我们为每个用户都配备了专属的“私人档案室” (profiles 表)和“保安”(RLS)。现在,是时候让他们往自己的房间里放点东西,来彰显个性了——比如,上传一个自己的头像。
这就需要用到 Supabase 的另一个核心功能:文件存储 (Storage)。
首先要明确一点:我们之前创建的 PostgreSQL 数据库,是用来存放结构化数据的,比如文字、数字、日期等,就像 Excel 表格一样。而图片、视频、PDF 这类文件,则需要存放在专门的地方。
Supabase Storage 就是为此而生的。你可以把它想象成一个为你项目量身定做的、安全可靠的“云端硬盘”。
一、核心概念:桶 (Buckets)
要使用 Storage,你只需要理解一个核心概念就够了:桶 (Bucket)。
“桶”就是一个顶层的文件夹,用来分类组织你的文件。一个项目里可以创建多个桶。
我的建议(最佳实践): 一定要根据文件的用途来创建不同的桶。例如:
- 创建一个名为
avatars的桶,专门存放所有用户的头像。 - 创建一个名为
posts-images的桶,存放博客文章里的配图。
为什么要这样做?因为 Storage 的所有安全策略,都是基于“桶”来设置的。把不同用途和安全等级的文件分在不同的桶里,能让你进行更精细、更安全的权限管理。

二、动手创建一个“头像桶”
我们来动手操作一遍。
1. 在 Supabase 仪表盘的左侧菜单,找到并点击那个像“文件夹”一样的图标,进入 **Storage** 管理页面。
2. 点击 **“Create a new bucket”** 按钮。
3. 给你的桶起个名字,我们填入 `avatars`。
4. 为了让所有人都能在网站上看到用户的头像,我们可以将这个桶设置为 **“Public” (公开)**。

点击 **“Save”**,我们的“头像桶”就准备好了。
#### **三、完整工作流程:从上传到显示**
现在,我们来走一遍从前端上传一张图片,到最终在页面上看到它的完整流程。这个流程是所