首页 > 解决方案 > Firebase 存储来存储图像并使用来自 firebase 函数的实时数据库中的 url

问题描述

我们有 firebase nodejs 功能,可以从我们的合作伙伴网站获取 base64 图像数据。我们将这些数据存储到 Firebase 存储中,如下所示:

const storageRef = admin.storage().bucket(bucketName)
const fileRef = storageRef.file('myimage.png')
await fileRef.save(base64Image) 

此处用于此目的的存储桶具有只读属性,因此安全性不是问题。如何获取存储在存储桶中的图像的 url 以放入我的实时数据库?

在 UI 方式中,我可以直接从 firebase 控制台上传图片并可以看到链接。我需要这个链接。

根据我对谷歌的研究,我发现由于存储桶的安全性,获取下载网址是服务器端的一个问题,您需要获取过期的签名网址。就我而言,因为它是公开的,所以我希望有办法获取网址。

另一种方法是完全绕过存储桶并将base64图像直接存储到实时数据库中,但由于base64字符串的长度非常大,我对此并不满意。理想情况下,我的图像将在几 kbs 的范围内。

如何处理?

标签: node.jsfirebasefirebase-realtime-databasefirebase-storagefirebase-admin

解决方案


你有两个选择:

  1. 使用过期日期很长的服务器端生成签名 URL。
  2. 在客户端生成一个(不会过期的)下载 URL。

要使用下载 URL,您需要:

  1. 上传时将图片的路径写入数据库。
  2. 让客户端检测到数据库中是否存在其图像的下载 URL。
  3. 如果没有下载 URL,让客户端根据路径生成下载 URL,并将其写入数据库。

推荐阅读