Firebase存储如何存储和检索图像


268

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


1
这很酷,如果我使用
Firebase

6
从昨天开始,Firebase发布了一项名为Firebase存储(firebase.google.com/docs/storage)的新功能,该功能使您可以上传和下载任意文件(图像,视频,音频等)。它得到了Google Cloud Storage(cloud.google.com/storage)的支持,具有PB级的规模和具有竞争力的价格。您绝对应该检查一下:)
Mike McDonald

16
用户发现它有用,为什么要关闭它?
Amr Lotfy

7
@TinyGiant这不是要提出建议,那么为什么要这样封闭呢?它正在询问软件服务的功能-完全是主题。

2
我讨厌过早的封闭评论。直截了当的问题不应该为上帝的爱而封​​闭!
杰里尔·库克

Answers:


277

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

当然可以!根据图像的大小,您有两种选择:

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

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

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

2.查看大图

Firebase的限制为10mb(由utf8编码的字符串数据)。如果图像更大,则必须将其分成10mb的块。没错,尽管Firebase针对频繁更改的小字符串(而不是多兆字节的字符串)进行了更优化。如果您有大量的大型静态数据,则绝对建议您使用S3或CDN。


2
棒极了。您是否遇到过一些文件大小限制?我不认为Firebase是用数兆字节的字符串制作的...
MasterScrat

8
Firebase的限制为10mb(由utf8编码的字符串数据)。如果图像更大,则必须将其分成10mb的块。没错,尽管Firebase针对频繁更改的小字符串(而不是多兆字节的字符串)进行了更优化。如果您有大量的大型静态数据,则绝对建议您使用S3或CDN。
Michael Lehenbauer 2013年

14
Firebase确实需要为其托管系统或在其库中内置api的s3实例添加更大的存储。
The_Brink 2015年

9
@The_Brink感谢您的反馈。这绝对是我们的雷达!
Michael Lehenbauer 2015年

4
@ezain是的。我可能不建议将这种方法用于大型生产站点(您确实想要CDN支持的图像服务),但是对于许多使用而言,它很简单且“足够好”。
Michael Lehenbauer

25

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

希望这可以帮助。



如果您要将图像托管在亚马逊上,为什么不将其保存在Firebase Storage中呢?
Ojonugwa Jude Ochalifu

19

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


1
这种方法的唯一问题是,当图像很大时,在活动之间移动它们会使应用程序变慢,并且在某些情况下会崩溃
Ojonugwa Jude Ochalifu

10

您还可以使用一个名为的服务Filepicker,它将图像存储到其服务器,而Filepicker(现在称为Filestack)将为您提供图像的URL。然后,您可以将URL存储到Firebase。


我从您尝试过的评论中看到了这项服务,但对此并不满意。
bpolat

3

首先有几种方法可以像Grendal2501那样做。然后,类似于user15163,您可以将图像URL存储在firebase中,并将图像托管在firebase主机或Amazon S3上。


尝试插入和渲染图像时出现403错误-上传后的图像存在权限问题-有关如何设置上传的任何信息。我尝试使用acl:“公共读取”-但随后上传失败-带有403。任何可以帮助的信息策略文档和存储桶策略-都很棒。AWS-文档很困难,没有调试信息,除了访问被拒绝以外,其他都出错。
杰米

2
提出另一个问题
Jakob Hartman

不错的主意:)完成-尽管筹码可能有所不同-如果您可以煽动我,欢迎您。AWS S3错误调试非常令人沮丧-至少到目前为止。 stackoverflow.com/questions/31998827/…–
杰米

2

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.