我正在开发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存储处理图像上传和下载的最佳实践是什么?
谢谢。
答案 0 :(得分:1)
情况1-下载URL将保持有效,直到您在控制台中手动将其撤消为止;否则,该URL将保持有效。即它不仅会过期。参见Revoking Firebase storage download urls。该网址被视为“无法使用”。存在撤消功能,以便您可以在受到威胁时对其进行更改。
第2种情况-您每次都会收到相同的URL(可以在控制台中检查相同的URL)-除非当然有人在控制台中手动吊销了它并创建了一个新URL。