我需要通过直接链接访问存储在Firebase Storage上的图像,例如
http://myfirebasehost.com/storage/imgIwant.png
据我所知,它只能使用gs://
协议的这种类型的URL,但是,它不能通过链接访问,只能在SDK API中访问。
我需要一个解决方案完全如上所述使用Firebase平台,如果不可能,接受其他建议。
我的代码中有一些常量,它们是指向图像的链接。事实证明,如果我想更新这张图片,我必须进行新的部署。相反,我想在同一个URL更新图像。这将是不可能做到这一点与firebase(据我所知),因为由存储提供的URL是无法访问的链接。
另一种替代方法是将图像转换为base64并存储在数据库中,但这将是非常广泛和不切实际的。
9条答案
按热度按时间qnzebej01#
如何通过示例将
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
确保URL转义您的blob路径。例如,将正斜杠(/
)替换为%2F,将空格(``)替换为%20。2nd
请确保您已在需要的地方打开读取访问权限。这里有一个开放的规则来移动:vom3gejh2#
使用Firebase Storage,您可以使用两个URL来表示文件:
第一个选项要求您使用
reference.getDownloadURL()
方法将内部gs://
URL转换为公共https://
URL。第二个选项允许您与受信任的个人共享此公开但无法猜测的URL,并允许他们在不对Firebase进行身份验证或使用您的应用程序的情况下访问内容-例如与Google Photos共享家庭照片。这种行为可能已经足够好了,除非你想要用干净的URL公开共享。您可以在浏览器中使用此URL,或使用任何其他HTTP库来下载它。我们也提供下载这些文件的功能(参考),所以你不需要获得第三方库,你可以直接使用我们。
我强烈建议阅读our docs以获得更多信息。
smdnsysy3#
2020年,我很难弄清楚这一点,特别是因为Swift中
CharacterSet
编码字符串的限制(或者很可能我错过了一些东西)。以下是我如何设法转换Firebase存储上Blob的“路径”(文件夹路径)的步骤(上传后)。
1.上传后,给定一个存储元数据(在iOS中,我们有一个名为
FIRStorageMetadata
的类),获取名为path
和bucket
的字符串对象。urlHostAllowed
编码路径字符串。但是,这是不够的,就像我在上面说的,它要么是没有字符集编码字符串到一个URL,包括**"+'加号。因此,在使用urlHostAllowed
编码之后,我调用替换出现字符串方法,将"+"替换为"%2B”**瞧!
常见问题
1.* *token**可以省略吗?是的,当然。它只是工作。从我学会就一直在做。
1.我们可以省略
?alt=media
吗?不!你只会得到一个json格式的字符串,而不是文件。1rhkuytd4#
对于那些谁只是想得到一个链接
在
console > Storage
中选择一个特定的照片,你会看到下面的链接。
balp4ylt5#
2020年***
Firebase已连接Google Cloud Platform:
您需要在Google Cloud Platform上公开存储桶或所需对象,然后您将获得一个简单的链接,无需编辑它:
Making data public
您也可以在不公开数据的情况下使用该链接(但您必须登录才能访问):
转到Google Cloud Platform>选择项目>存储>浏览器>打开bucket appID.appspot.com>打开任何对象,在那里你有URI(Firebase控制台提供的)和URL。
a2mppw5e6#
转换为公共URL检查示例。
假设链接是gs:funzone-website.appspot.com/public/logo.jpg
let g= funzone-website.appspot.com/public/logo.jpg
如果存在文件夹,则将文件路径替换为%。在上面的例子中,public是一个文件夹,添加?alt=media和add o。
现在g= funzone-website.appspot.com/o/public%2Flogo.jpg?alt=media
用%2F转换和替换路径(/)
使用https://firebasestorage.googleapis.com/v0/b/{g}进行转换
或
https://firebasestorage.googleapis.com/v0/b/funzone-website.appspot.com/o/public%2Flogo.jpg?alt=media
如果没有文件夹(公共),则链接为
https://firebasestorage.googleapis.com/v0/b/funzone-website.appspot.com/o/logo.jpg?alt=media
92dk7w1h7#
另一个选项是以下格式的URL:
PROJECT-ID
:Firebase项目的项目IDFILEPATH
:项目文件的路径hwazgwia8#
您可以尝试这样做,因为它允许公共读访问
hs1ihplo9#
如果你想把照片公之于众-
将此添加到存储规则中
然后你就可以像