存储(Storage)

RDS Supabase存储服务通过存储桶、文件夹和文件三个核心概念来管理您的文件。

基本概念

  • 存储桶:存储文件的顶层容器,可以看作“超级文件夹”。通常,您会为不同的安全或访问规则创建独立的存储桶,例如,一个用于存放公开图片,另一个用于存放私有用户资料。

  • 文件夹:在存储桶内组织文件,用法与您计算机上的文件夹相同。

  • 文件:任何媒体文件,如图片、视频等。将这类大文件存放在存储服务中,可以减轻数据库的负担。请注意,出于安全原因,HTML文件将以纯文本形式提供。

重要

所有存储桶、文件夹和文件的名称都必须遵循阿里云OSS命名规范,避免使用特殊字符。

基本操作

您可以通过Supabase控制台创建存储桶并管理文件,也可以使用JavaScript库进行实现,以下将以JavaScript库为例进行说明。

创建存储桶

创建一个名为avatars的存储桶。

// Use the JS library to create a bucket.
const { data, error } = await supabase.storage.createBucket('avatars')

上传文件

avatars存储桶中上传一个文件。

const avatarFile = event.target.files[0]
const { data, error } = await supabase.storage
  .from('avatars')
  .upload('public/avatar1.png', avatarFile)

下载文件

avatars存储桶中下载指定文件。

// Use the JS library to download a file.
const { data, error } = await supabase.storage.from('avatars').download('public/avatar1.png')

设置安全规则

要限制对文件的访问,您可以使用仪表板或SQL。以下通过SQL策略(Policy)演示如何精确控制文件的访问权限。

-- Use SQL to create a policy.
create policy "Public Access"
  on storage.objects for select
  using ( bucket_id = 'public' );

相关API