Rod*_*hos 19 firebase firebase-storage
我需要通过直接链接访问存储在Firebase存储上的图像,例如
http://myfirebasehost.com/storage/imgIwant.png
Run Code Online (Sandbox Code Playgroud)
据我所知,它只能使用协议的这种类型的URL gs://,但是,它不能通过链接访问,只能在SDK api中访问.
我需要一个完全如上所述的使用Firebase平台的解决方案,如果不可能,接受其他建议.
我的代码有常量,是指向图像的链接.事实证明,如果我想更新这张图片,我必须进行新的部署.相反,我想在同一个URL更新图像.使用firebase(据我所知)这是不可能的,因为Storage提供的URL不能通过链接访问.
另一种方法是将图像转换为Base64并存储在数据库中,但将是非常广泛的和不切实际的.
Mik*_*ald 15
使用Firebase存储,您将获得两个可用于表示文件的URL:
// "Private" internal URL, only accessible through Firebase Storage API
// This is protected by Firebase Storage Security Rules & Firebase Auth
gs://bucket/object
// "Public" unguessable URL, accessible by anyone with the link
// This is secured because that token is *very* hard for someone to guess
https://firebasestorage.googleapis.com/v0/bucket/object?alt=media&token=<token>
Run Code Online (Sandbox Code Playgroud)
第一个选项要求您使用该reference.getDownloadURL()方法将内部gs://URL转换为公共https://URL.
第二个选项允许您与受信任的个人共享此公开但不可取的URL,并允许他们无需身份验证即可访问内容到Firebase或使用您的应用 - 考虑与Google相册共享家庭照片.可能这种行为已经足够好了,除非你希望公共共享干净的URL.您可以在浏览器中使用此URL,也可以使用任何其他HTTP库来下载它.我们也提供下载这些文件的能力(参考文献),因此您不需要获得第三方库,您可以使用我们.
我强烈建议您阅读我们的文档以获取更多相关信息.
如何将您翻译gs storage location成direct url示例:
gs://nobs-f32f2.appspot.com/profile/1s_by_wlop-dc1sdan.jpg
变成
https://firebasestorage.googleapis.com/v0/b/nobs-f32f2.appspot.com/o/profile%2F1s_by_wlop-dc1sdan.jpg?alt=media
1st确保网址转义您的Blob路径。例如,将正斜杠(/)换成%2F,将空格()换成%20。
2nd确保您已在需要的地方打开了读取访问权限。这是一个前进的开放规则:
service firebase.storage {
match /b/{bucket}/o {
match /{allPaths=**} {
allow read: if true;
allow write: if request.auth != null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
2020 年,我很难弄清楚这一点,尤其是因为CharacterSetSwift 中编码字符串的局限性(或者很可能我遗漏了一些东西)。
以下是我如何在 Firebase 存储(上传后)上转换 Blob 的“路径”(文件夹路径)的步骤。
FIRStorageMetadata.的类)获取名为pathand的字符串对象bucket。正确编码路径字符串!这个很重要!如果您错过了一个字符,很明显,当您尝试下载完整的直接 URL 时,您会收到错误消息。
urlHostAllowed。但是,这还不够,就像我上面说的,要么没有 CharacterSet 将字符串编码为包含“+'加号的 URL 。所以使用 编码后urlHostAllowed,我调用替换出现字符串方法,替换“+”与“%2B” 连接字符串:
瞧!
常见问题
?alt=media吗?不!你只会得到一个 json 格式的字符串,而不是文件。| 归档时间: |
|
| 查看次数: |
13111 次 |
| 最近记录: |