Node.js Firebase存储用于存储图像,并使用Firebase函数的实时数据库中的url

Node.js Firebase存储用于存储图像,并使用Firebase函数的实时数据库中的url,node.js,firebase,firebase-realtime-database,firebase-storage,firebase-admin,Node.js,Firebase,Firebase Realtime Database,Firebase Storage,Firebase Admin,我们有firebase nodejs函数,从合作伙伴站点获取base64图像数据。我们将这些数据存储到firebase存储中,如下所示: const storageRef = admin.storage().bucket(bucketName) const fileRef = storageRef.file('myimage.png') await fileRef.save(base64Image) 此处用于此目的的bucket为readonly true,因此安全性不受关注。如何获取存储在

我们有firebase nodejs函数,从合作伙伴站点获取base64图像数据。我们将这些数据存储到firebase存储中,如下所示:

const storageRef = admin.storage().bucket(bucketName)
const fileRef = storageRef.file('myimage.png')
await fileRef.save(base64Image) 
此处用于此目的的bucket为readonly true,因此安全性不受关注。如何获取存储在bucket中的图像的url以放入实时数据库

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

根据我在google上的研究,我发现在服务器端获取下载url是一个问题,因为bucket的安全性,所以需要获取过期的signedUrl。在我的情况下,因为它是公开的,所以我希望有一种方法来获取url

另一种方法是完全绕过bucket,将base64映像直接存储到realtime db中,但由于base64字符串的长度非常大,因此我对这种方法不太满意。理想情况下,我的图像应该在几kbs的范围内

如何处理这个问题?

您有两个选择:

  • 使用服务器端生成过期日期很长的签名URL
  • 在客户端生成(非过期)下载URL
  • 要使用下载URL,您需要:

  • 上载时将图像的路径写入数据库
  • 让客户端检测到数据库中有他们的图像的下载URL
  • 如果没有下载URL,让客户端从路径生成下载URL,并将其写入数据库

  • 虽然第二个选项更诱人,但没有涉及到客户端,因此我不确定如何使用此选项?是否有非常长的过期日期签名url的代码示例?您始终可以为此目的创建客户端应用程序。长期有效期代码示例:确定您肯定想投票并回答,并且正在尝试您提到的任何内容。关于你的评论有一个问题:你说过我可以为此创建一个客户端应用程序。试图了解更多关于这方面的信息。你是说我可以在firebase函数中创建一个客户端应用程序并使用它,还是说完全是别的什么?不。您无法在云功能中创建客户端应用程序。如果在云函数中有另一种方法可以实现这一点,那么关于的公认答案可能不会有那么多的UpVote(包括我的)。但是,url非常长,带有signedUrl选项,有256个字符。我拥有bucket的公共读取权限,但仍然删除超长签名会引发访问错误。无论如何,我想把它缩短一点