高效的Firebase存储映像下载

高效的Firebase存储映像下载,firebase,flutter,firebase-storage,Firebase,Flutter,Firebase Storage,我正在开发一个Flitter应用程序,我不知道从Firebase存储中存储和检索图像的最佳方式是什么 例如,我正在实现一个show profile图片功能: CircleAvatar(backgroundImage: NetworkImage(profilePictureUrl)) 我从数据库中获取profilePictureUrl。我可以通过两种方式将其值保存在数据库中:保存其firebase下载url,或保存其firebase路径 案例1:保存firebase下载url 通过getDown

我正在开发一个Flitter应用程序,我不知道从Firebase存储中存储和检索图像的最佳方式是什么

例如,我正在实现一个show profile图片功能:

CircleAvatar(backgroundImage: NetworkImage(profilePictureUrl))
我从数据库中获取
profilePictureUrl
。我可以通过两种方式将其值保存在数据库中:保存其firebase下载url,或保存其firebase路径

案例1:保存firebase下载url

通过
getDownloadUrl
我得到了这种url:

https://firebasestorage.googleapis.com/v0/b/{project}/o/{path}?alt=media&token={token}
如果我把它保存在我的数据库中,我会保存一个包含令牌的Url。你认为这个代币迟早会过期吗

案例2:保存firebase映像路径

如果我将图像路径保存在数据库中,则在进行任何图像访问之前调用
getDownloadUrl
的开销都会增加,例如:

Firebase存储路径值:images/users/{userId}/profile

  Future<String> getProfilePictureUrl(String path) async {
    var ref = _firebaseStorage.ref().child(path);
    String url = (await ref.getDownloadURL()).toString();
    return url.toString();
  }
未来getProfilePictureUrl(字符串路径)异步{
var ref=_firebaseStorage.ref().child(路径);
字符串url=(wait ref.getDownloadURL()).toString();
返回url.toString();
}
困境

使用Firebase存储处理图像上载和下载的最佳做法是什么


谢谢。

案例1-下载URL将保持有效,直到您在控制台中手动撤销它;i、 它不仅仅是过期。看见该URL被视为“不可用”。撤销存在,因此如果它被破坏,您可以对其进行更改


案例2-您每次都会收到相同的URL(与您可以在控制台中检查的URL相同)-当然,除非有人在控制台中手动撤销该URL并创建了一个新的URL。

您是否有一些您已经尝试过的代码,可以向我们展示?