高效的Firebase存储映像下载

时间:2018-09-29 07:16:45

标签: firebase flutter firebase-storage

我正在开发Flutter应用程序,但我不知道哪种方法是从Firebase Storage存储和检索图像的最佳方法。

例如,我正在实现表演资料图片功能:

CircleAvatar(backgroundImage: NetworkImage(profilePictureUrl))

我从数据库中获得profilePictureUrl。我可以通过两种方式将其值保存在数据库中:保存其Firebase下载URL,或保存其Firebase路径。

案例1:保存Firebase下载网址

有了getDownloadUrl,我得到了这样的网址:

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();
  }

困境

使用Firebase存储处理图像上传和下载的最佳实践是什么?

谢谢。

1 个答案:

答案 0 :(得分:1)

情况1-下载URL将保持有效,直到您在控制台中手动将其撤消为止;否则,该URL将保持有效。即它不仅会过期。参见Revoking Firebase storage download urls。该网址被视为“无法使用”。存在撤消功能,以便您可以在受到威胁时对其进行更改。

第2种情况-您每次都会收到相同的URL(可以在控制台中检查相同的URL)-除非当然有人在控制台中手动吊销了它并创建了一个新URL。