访问与下载文件
本文介绍 PG 模式云存储中文件的访问方式,包括直接下载、签名下载 链接、批量签名链接和公开 URL。
访问方式对比
| 方式 | 适用场景 | 权限要求 | 特点 |
|---|---|---|---|
download() | 当前用户直接读取文件内容 | 需要 SELECT Policy 放行 | 返回 Blob 或流 |
createSignedUrl() | 私有文件临时分享 | 创建签名链接时需要 SELECT 权限 | 链接有有效期 |
createSignedUrls() | 批量生成临时下载链接 | 每个对象都需要 SELECT 权限 | 适合列表页批量展示 |
getPublicUrl() | 公开资源访问 | Bucket 与 RLS 允许公开读 | 只拼接 URL,不发起请求 |
| HTTP API 下载 | 服务端或跨语言访问 | Token 或签名链接 | 适合后端集成 |
直接下载
使用 download() 下载对象,默认返回 Blob:
const bucket = app.storage.from('private-files');
const { data: blob, error } = await bucket.download('user-123/resume.pdf');
if (error) {
throw error;
}
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'resume.pdf';
a.click();
URL.revokeObjectURL(url);
如果运行时支持流式读取,可以使用 .asStream():
const { data: stream, error } = await bucket
.download('videos/demo.mp4')
.asStream();
if (error) {
throw error;
}