Supabase Storage 是 Supabase 平台中的文件存储模块,提供文件上传、下载、存储桶管理以及签名 URL 生成等能力。它通过 supabase.storage 客户端 API 暴露统一的操作接口,适用于需要在应用中处理文件存储与访问控制的场景。
用途 该技能主要用于文件的上传、下载、存储桶(bucket)管理以及签名 URL 的生成。当需要上传文件、管理存储桶、生成签名 URL 或处理文件访问权限时,可以使用该技能。
主要能力
- 文件操作:上传、下载、删除、列出、移动、复制文件。
- URL 生成:获取公开 URL(公开存储桶)、创建签名 URL(私有存储桶)、批量创建签名 URL、创建签名上传 URL。
- 存储桶配置:支持公开与私有两种类型;可通过 Dashboard、SQL 或 config.toml 创建存储桶,并配置文件大小上限与允许的 MIME 类型。
- 图片变换:支持调整尺寸、质量与格式转换,该功能在 Pro 及以上套餐可用。
- 访问控制:通过 storage.objects 上的 RLS 策略实现基于用户身份的访问权限管理,例如仅允许用户查看、上传、删除自己文件夹内的文件。
- 错误处理:上传等操作返回 error 对象,可根据错误信息判断文件已存在、文件过大或 MIME 类型无效等情况。
使用方式 通过 supabase.storage 客户端调用,常见方法包括:
- 上传:storage.from('bucket').upload(path, file),可传入 cacheControl、contentType、upsert 等选项;也支持从浏览器文件输入上传以及上传 Base64 数据。
- 下载:storage.from('bucket').download(path),返回 Blob,可用于创建对象 URL 或触发浏览器下载。
- 获取 URL:getPublicUrl(path) 用于公开存储桶;createSignedUrl(path, 3600) 用于私有存储桶;createSignedUrls 批量生成;createSignedUploadUrl 生成签名上传 URL。
- 列出文件:list(folder),支持 limit、offset、sortBy 以及 search 等选项。
- 删除文件:remove([path]),支持一次删除多个文件。
- 移动与复制:move(from, to) 与 copy(from, to)。 存储桶可通过 Dashboard 界面创建,也可通过 SQL 插入 storage.buckets 表,或在 config.toml 中配置。
适用场景
- 用户头像、图片等公开资源的存储与访问。
- 私有文档的受控访问,通过签名 URL 临时授权。
- 按用户隔离的文件目录管理,结合 RLS 策略限制访问范围。
- 需要对图片进行尺寸、质量或格式处理的场景(需 Pro 及以上套餐)。
限制
- 图片变换功能仅在 Pro 计划及以上可用。
- 文件大小上限因套餐而异:Free 为 50 MB,Pro+ 为 500 GB。
- 私有存储桶的文件访问需要认证或签名 URL。
- 其他未在资料中明确说明的限制暂未提供。