【问题标题】:Should I upload images to Cloud Firestore or Firebase Storage?我应该将图片上传到 Cloud Firestore 还是 Firebase Storage?
【发布时间】:2019-11-11 19:17:46
【问题描述】:

可能是个愚蠢的问题,但需要像我这样的初学者弄清楚。

我知道如何在 Firestore 数据库上上传图片,但我想,为什么我们不使用 base64 字符串来上传图片,而不是使用 FirebaseStorage,这可能很容易?还是对字符串长度有限制?

~ PS:我还没有尝试使用 base64 字符串将图像上传到 Firestore。

【问题讨论】:

    标签: firebase flutter google-cloud-firestore firebase-storage


    【解决方案1】:

    Cloud Firestore "Usage and limits" documentation 声明“文档的最大大小”为1 MiB (1,048,576 bytes)
    这是图像的少量数据,仅允许将低分辨率图像存储在单个文档中。作为一种解决方法,您可以将图像存储在多个文档中,但这会变得不必要地复杂,而 Firebase 存储 完美地解决了这个问题。

    此外,在收听文档中的任何更改时,您将下载整个图像(整个文档)。如果您有一个包含image (base64 string)likes (int count) 字段的文档,并且您尝试侦听likes 的实时更新,那么您将在每次客户端下载完整图像。

    Firebase Storage 因此很可能是您要搜索的内容,因为您可以存储任何大小(与您的容量一样大)的对象,它为您提供下载 URL,而您没有处理任何编码或解码(尽管Cloud Firestore allows blob's,也就是字节数据)。

    【讨论】:

      【解决方案2】:

      在 Firestore 上存储文件(作为二进制数据)而不是 Firebase 存储没有任何好处。

      Firestore 主要针对读写和删除进行计费,每月免费存储仅为 1 GB !!!如果做得不好,这可能是一个严重的陷阱。阅读How we spent 30k USD in Firebase in less than 72 hours

      Firebase 存储是迄今为止存储文件的最佳选择,几乎没有文件大小限制且价格便宜得多,然后只需将文件 url 保存到 Firestore 即可。

      【讨论】:

      • 您还忽略了一个重点:存储在 Firebase 存储中的文件可以使用 URL 访问 - 不需要序列化/反序列化代码。
      【解决方案3】:

      从技术角度来看,是的,您始终可以存储 (base64) 字符串并在以后使用它来检索图像。但是,base64 字符串比字节数据高出 30%。因此,如果您使用 base64,您将失去性能和存储空间。

      其次,使用 FirebaseStorage 有另一个优势。就是在手机app在后台的时候上传图片。作为开发人员,我们不必为此编写任何特定代码。

      @creativecreatorormaybenot 已经指出了 Cloud Firestore 和 Firebase 存储的限制。

      我的结论:比起 base64,我更喜欢 Firebase 存储。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-04-08
        • 2021-02-06
        • 2020-04-08
        • 1970-01-01
        • 2015-02-21
        • 2017-03-20
        • 2019-01-25
        相关资源
        最近更新 更多