Flutter中如何获取Supabase Storage已上传媒体的URL?
获取Supabase已上传媒体的下载链接(downloadUrl)
在Flutter的Supabase SDK中,获取已上传媒体的下载链接有两种常用方式,可根据文件访问权限选择:
1. 获取公开文件的下载链接
如果文件存储在公开访问路径(比如示例中的public/前缀路径),直接调用getPublicUrl方法生成链接:
// 基于存储桶和文件路径生成公网下载链接 final downloadUrl = supabase.storage.from('avatars').getPublicUrl('public/avatar1.png');
2. 获取私有文件的签名下载链接
如果文件是私有访问权限,需要生成带有效期的签名链接,使用createSignedUrl方法:
// 生成有效期为3600秒(1小时)的签名下载链接 final signedUrl = await supabase.storage.from('avatars').createSignedUrl('public/avatar1.png', 3600);
补充:通过上传响应获取路径生成链接
上传完成后,也可以从返回的response对象中提取文件路径,再生成链接:
final avatarFile = File('path/to/file'); final response = await supabase .storage .from('avatars') .upload('public/avatar1.png', avatarFile, fileOptions: FileOptions( cacheControl: '3600', upsert: false )); // 从响应中获取文件路径并生成下载链接 final filePath = response.data?.path; if (filePath != null) { final downloadUrl = supabase.storage.from('avatars').getPublicUrl(filePath); }
内容的提问来源于stack exchange,提问作者tailor
相关产品推荐
相关产品推荐

