将文件存储在Firebase存储中

Store files in Firebase storage

本文关键字:存储 Firebase 文件      更新时间:2023-09-26

我正在用Firebase和Angularjs为我的前端构建一个web应用程序。我想知道是否可以将文件(任何类型)存储在Firebase数据库中。

如果是,限制是什么?

感谢

当您将数据从客户端发送到Firebase时,它会被序列化为JSON对象。这限制了您只能存储可以用JSON:原语表示的类型

  • 字符串(Unicode)
  • 布尔
  • 数字(64位浮点)
  • null

如果您的浏览器支持文件API,您可以使用上述类型将文件转换为表示形式,那么是的,您可以将其存储在Firebase中(前提是小于10mb)。

如果您的文件是用Unicode编码的,那么您可以简单地将其读取到一个字符串变量中,然后将其传递给Firebase——就像处理任何其他字符串一样。

如果你想使用二进制文件,它会稍微复杂一些。

以图像为例。您可以使用readAsDataURL方法读取图像,该方法返回一个base64编码的字符串,该字符串可以安全地序列化为JSON。当另一个用户从Firebase请求数据时,他们可以简单地使用src='data:image/png;base64,语法来正确显示图像。

这里有一个使用这种技术的示例项目。

一个更复杂的例子可能是二进制格式,例如Midi文件。虽然你可以将文件读取成base64字符串,但你不能在浏览器中播放,所以用户需要下载它。你也不能给他们一个base64字符串。因为大多数迷笛玩家都不理解它。

这意味着,在将base64数据写入文件或提供下载之前,您需要编写一个解码器,将其转换回二进制。这可能需要使用类型化数组将其转换为blob。

Firebase现在有存储,它与实时数据库是分开的。它没有Angular绑定,但它将支持大于10mb的文件,并且您不必对任何内容进行编码。