【问题标题】:Firebase Storage How to store and Retrieve images [closed]Firebase 存储如何存储和检索图像 [关闭]
【发布时间】:2026-02-03 08:50:01
【问题描述】:

如何在 firebase 上存储和查看图像?

【问题讨论】:

  • 这很酷,如果我使用 firebase 存储图像,我可以使用 firebase 登录来保证安全
  • 截至昨天,Firebase 发布了一项新功能,称为 Firebase 存储 (firebase.google.com/docs/storage),允许您上传和下载任意文件(图像、视频、音频等) .)。它由 Google Cloud Storage (cloud.google.com/storage) 提供支持,可实现 PB 级规模和具有竞争力的价格。你一定要看看这个:)
  • 用户觉得有用,为什么要关闭它?
  • @TinyGiant 这不是在征求建议,为什么要这样关闭它?它询问的是软件服务的一个特性——完全是在主题上。
  • 我讨厌过早关闭的 cmets。看在上帝的份上,直截了当的问题不应该被关闭!

标签: firebase firebase-realtime-database firebase-storage


【解决方案1】:

更新 (20160519)Firebase 刚刚发布了一项名为 Firebase Storage 的新功能。这允许您将图像和其他非 JSON 数据上传到专用存储服务。我们强烈建议您使用它来存储图像,而不是将它们作为 base64 编码数据存储在 JSON 数据库中。

你当然可以!根据图片的大小,您有以下几种选择:

1.对于较小的图像(小于 10mb)

我们在这里有一个示例项目:https://github.com/firebase/firepano

一般方法是在本地加载文件(使用 FileReader),这样您就可以将其存储在 Firebase 中,就像存储任何其他数据一样。由于图像是二进制文件,因此您需要获取 base64 编码的内容,以便将其存储为字符串。或者更方便的是,您可以将其存储为 data: url,然后准备作为 img 标签的 src 放入(这就是示例所做的)!

2。对于较大的图像

Firebase 确实有 10mb(utf8 编码的字符串数据)的限制。如果您的图像更大,则必须将其分成 10mb 的块。您是对的,尽管 Firebase 针对频繁更改的小字符串而不是数兆字节的字符串进行了优化。如果您有大量的大型静态数据,我肯定会推荐 S3 或 CDN。

【讨论】:

  • 太棒了。您是否遇到过文件大小限制?我不认为 Firebase 是用数兆字节的字符串制作的......
  • Firebase 确实有 10mb(utf8 编码的字符串数据)的限制。如果您的图像更大,则必须将其分成 10mb 的块。您是对的,尽管 Firebase 针对频繁更改的小字符串而不是数兆字节的字符串进行了优化。如果您有大量的大型静态数据,我肯定会推荐 S3 或 CDN。
  • Firebase 确实需要为其托管系统添加更大的存储空间,或者在其库中内置 api 的 s3 实例。
  • @The_Brink 感谢您的反馈。这绝对是我们的雷达!
  • @ezain 没错。对于大型生产站点,我可能不会推荐这种方法(您真的需要一个 CDN 支持的图像服务服务),但它很容易并且“足够好”,可以用于大量使用。
【解决方案2】:

我最终自己将图像存储为 base64 格式。当从 firebase 回调时,我将它们从它们的 base64 值转换。

【讨论】:

  • 这种方法的唯一问题是,当图像很大时,跨活动移动它们会使应用程序变慢,在某些情况下会崩溃
【解决方案3】:

是的,您可以在 Firebase 中存储和查看图像。您可以使用文件选择器来获取图像文件。然后你可以随心所欲地托管图像,我更喜欢 Amazon s3。托管图像后,您可以使用为图像生成的 URL 显示图像。

希望这会有所帮助。

【讨论】:

【解决方案4】:

有几种方法,我首先按照 Grendal2501 的方法进行。然后我做了类似于 user15163 的操作,您可以将图像 URL 存储在 firebase 中,并将图像托管在您的 firebase 主机或 Amazon S3 上;

【讨论】:

  • 403 尝试插入和渲染图像时出错 - 上传图像后出现权限问题 - 有关您如何设置上传的任何信息。我尝试使用 acl: 'public-read' - 但上传失败 - 出现 403。任何可以提供帮助的信息策略文档和存储桶策略 - 都会很棒。 AWS - 文档很困难,除了访问被拒绝之外,没有错误的调试信息。
  • 作为另一个问题提出这个问题
  • 公平的想法:) 完成 - 尽管堆栈可能不同 - 如果有任何煽动你可以给我 - 将受到欢迎。 AWS S3 错误调试非常令人沮丧——至少到目前为止。 *.com/questions/31998827/…
【解决方案5】:

在 JSON 中使用 Base64 字符串会非常繁重。解析器必须做很多繁重的工作。目前,Fresco 只支持 base 支持 Base64。最好在 Amazon Cloud 或 Firebase Cloud 上放一些东西。并获取图像作为 URL。这样您就可以使用 Picasso 或 Glide 进行缓存。

【讨论】:

    【解决方案6】:

    您还可以使用名为 Filepicker 的服务,它将您的图像存储到他们的服务器,Filepicker 现在称为 Filestack,将为您提供图像的 URL。您可以将 URL 存储到 Firebase。

    【讨论】:

    • 我从您的评论中看到了这项服务,我试过但不是很高兴。
    最近更新 更多