我正在开发一个 Flutter 应用程序,我不知道哪种方式是从 Firebase 存储中存储和检索图像的最佳方式。
例如,我正在实现显示个人资料图片功能:
CircleAvatar(backgroundImage: NetworkImage(profilePictureUrl))
我从数据库中获取profilePictureUrl
。我可以通过两种方式将其值保存在数据库中:保存其 firebase 下载网址或保存其 firebase 路径。
案例 1:保存火力下载网址
有了getDownloadUrl
我得到这种网址:
https://firebasestorage.googleapis.com/v0/b/{project}/o/{path}?alt=media&token={token}
如果我将其保存在我的数据库中,我会保留一个带有令牌的 URL。你认为这个令牌迟早会过期吗?
案例 2:保存 Firebase 图像路径
如果我将图像路径保存在我的数据库中,那么在任何图像访问之前调用getDownloadUrl
的开销,例如:
Firebase 存储路径值:图片/用户/{用户 ID}/配置文件
Future<String> getProfilePictureUrl(String path) async {
var ref = _firebaseStorage.ref().child(path);
String url = (await ref.getDownloadURL()).toString();
return url.toString();
}
两难
使用 Firebase 存储空间处理图片上传和下载的最佳做法是什么?
谢谢。
情况 1 - 下载 URL 将保持有效,直到您在控制台中手动撤销它;即它不会过期。请参阅撤销 Firebase 存储空间下载网址。该网址被视为"无法猜测"。吊销存在,以便您可以在它遭到入侵时进行更改。
情况 2 - 您每次都会收到相同的 URL(您可以在控制台中检查的相同 URL ( - 当然,除非有人在控制台中手动撤销它并创建了一个新 URL。