存储

存储辅助函数

了解存储模式


Supabase Storage 提供了 SQL 辅助函数,可用于编写 RLS (行级安全)策略。

storage.filename()

返回文件名。例如,如果文件存储在 public/subfolder/avatar.png 路径下,该函数将返回:'avatar.png'

使用示例

以下示例展示如何允许所有用户下载名为 favicon.ico 的文件:

1
2
3
4
5
6
7
create policy "允许公开下载"on storage.objectsfor selectto publicusing ( storage.filename(name) = 'favicon.ico');

storage.foldername()

返回文件所属的所有子文件夹组成的数组路径。例如,如果文件存储在 public/subfolder/avatar.png 路径下,该函数将返回:[ 'public', 'subfolder' ]

使用示例

以下示例展示如何允许认证用户上传文件到名为 private 的文件夹:

1
2
3
4
5
6
7
create policy "允许认证用户上传"on storage.objectsfor insertto authenticatedwith check ( (storage.foldername(name))[1] = 'private');

storage.extension()

返回文件扩展名。例如,如果文件存储在 public/subfolder/avatar.png 路径下,该函数将返回:'png'

使用示例

以下示例展示如何限制在名为 cats 的存储桶中只允许上传 PNG 文件:

1
2
3
4
5
6
7
create policy "仅允许上传PNG文件"on storage.objectsfor insertto authenticatedwith check ( bucket_id = 'cats' and storage.extension(name) = 'png');