从存储服务提供资源
从存储服务提供资源
公共存储桶
如存储桶基础所述,上传到公共存储桶的所有文件均可公开访问,并享有较高的CDN缓存命中率。
您可以通过以下标准URL格式访问这些文件:
1https://[project_id].supabase.co/storage/v1/object/public/[bucket]/[asset-name]
也可以使用Supabase SDK的getPublicUrl
方法自动生成该URL:
1234567import { createClient } from '@supabase/supabase-js'const supabase = createClient('your_project_url', 'your_supabase_api_key')// ---cut---const { data } = supabase.storage.from('bucket').getPublicUrl('filePath.jpg')console.log(data.publicUrl)
下载文件
若希望浏览器自动下载资源而非直接展示,可添加?download
查询参数。
默认情况下会使用资源名称作为保存文件名。您也可以通过download
参数指定自定义文件名,例如:?download=customname.jpg
私有存储桶
非公开存储桶中的资源被视为私有资源,无法像公共存储桶那样通过公开URL访问。
仅可通过以下方式访问:
- 在服务端生成有时限的签名URL(例如使用边缘函数)
- 通过GET请求访问URL
https://[project_id].supabase.co/storage/v1/object/authenticated/[bucket]/[asset-name]
并携带用户授权头
URL签名
通过调用SDK的createSignedUrl
方法,您可以生成有时限的签名URL供用户访问:
1234567891011import { createClient } from '@supabase/supabase-js'const supabase = createClient('your_project_url', 'your_supabase_api_key')// ---cut---const { data, error } = await supabase.storage .from('bucket') .createSignedUrl('private-document.pdf', 3600)if (data) { console.log(data.signedUrl)}