Gra*_*mbo 4 google-cloud-storage firebase firebase-realtime-database firebaseui firebase-storage
我有一个用于存储图像的iOS应用程序Firebase Storage。上传图像后,我将其保存storage reference在我的Firebase Database. 当应用程序加载时,它storage references从数据库中获取各种信息并使用该FirebaseUI方法显示其相应的图像,如下所示:
let storageRef = Storage.storage().reference(forURL: imageUrl)
imageView.sd_setImage(with: storageRef, placeholderImage: nil)
Run Code Online (Sandbox Code Playgroud)
这很好用……但速度很慢。
在寻找加速解决方案时,Firebase Storage我发现这篇文章暗示使用图像的公共链接,即。它的download url,而不是它的storage reference:https : //stackoverflow.com/a/44362350/5225013
我的理解是,这与在public urls他们面前有一个 CDN 有关,而storage references没有。
在download url可以在用下面的代码应用程序中检索:
let storageRef = Storage.storage().reference(forURL: imageUrl)
storageRef.downloadURL { (downloadUrl, error) in
if let downloadUrl = downloadUrl {
// do something with downloadUrl
}
}
Run Code Online (Sandbox Code Playgroud)
但是,以这种方式获取它对我的目的来说毫无用处,因为在显示图像之前使异步调用需要额外的时间......
我一直在考虑编写一个云函数来将每个图像download url与其对应的图像一起保存storage reference在数据库中,然后使用它在应用程序中显示图像。这些图像不是个人的,也不包含敏感内容,所以我不介意它们是否公开。我主要是想知道;如果我这样做,有什么我应该担心的吗?出于某种原因,这是不常见的做法吗?
你不需要“做”任何事情。
对于存储中的公共文件(即具有allow read;安全规则的文件),获取它们的 URL 为:
https://firebasestorage.googleapis.com/v0/b/ (项目ID) .appspot.com/o/ (存储路径) ?alt=media
我在我的应用程序中所做的是存储存储路径,然后使用简单的连接构建公共下载 URL。
奇迹般有效。
请注意,必须对存储路径中的某些字符(如空格和斜杠)进行转义。在 JavaScript 中,您可以使用encodeURIComponent().
| 归档时间: |
|
| 查看次数: |
917 次 |
| 最近记录: |