node.js - 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 的范围内。
如何处理?
解决方案
你有两个选择:
- 使用过期日期很长的服务器端生成签名 URL。
- 在客户端生成一个(不会过期的)下载 URL。
要使用下载 URL,您需要:
- 上传时将图片的路径写入数据库。
- 让客户端检测到数据库中是否存在其图像的下载 URL。
- 如果没有下载 URL,让客户端根据路径生成下载 URL,并将其写入数据库。
推荐阅读
- typescript - 使用类验证器验证编号 18.2
- python - 如何通过 python 访问从站点发出的请求的结果?
- sql - 在sql server中按最新日期和更新值分组
- c++ - 我可以在另一个类中实例化一个对象吗?
- shell - 如何在 shell 脚本中剪切我的 grep 输出的所需部分
- html - 为什么textarea的宽度和高度比iframe大?
- powershell - Powershell 检查是否存在 XML 属性
- ios - IB_DESIGNABLE 不在情节提要中呈现
- docker - 绑定挂载不适用于 Docker Desktop 中的 postgresdb
- amazon-web-services - AWS Athena 读取外部 S3 存储桶