在 Firebase 中存储下载的 Gif
Posted
技术标签:
【中文标题】在 Firebase 中存储下载的 Gif【英文标题】:Store Downloaded Gif in Firebase 【发布时间】:2019-10-04 02:12:54 【问题描述】:我正在使用 Giphy API
和 FLAnimatedImage
存储库来获取和显示 gif。有没有办法将选定的 gif 存储到 firebase
或 firestore
以便以后获取?
我的原因是避免重新下载 gif 的繁重任务。它会存储Data
对象的字节吗?
我知道我可能只存储 gif url,然后当我需要 gif 时,查询字符串并重新下载,但如果有办法,我希望再次避免这种情况。
任何指导将不胜感激。
let url = URL(string: gifUrlString)!
let imageData = try? Data(contentsOf: url)
let image = FLAnimatedImage(animatedGIFData: imageData)
【问题讨论】:
我在 2015 年回答了 similar question - 该代码显示了如何在 Firebase 中存储和检索 .jpg 文件。令人困惑的事情是避免重新下载 gif 的繁重任务 - 如果将其存储在 Firebase 中,则必须重新下载它。此外,Firebase 实时数据库不是存储图像的最佳解决方案 - Firebase 的 Firebase Storage 非常适合该任务。 @Jay 感谢您的留言。如果你允许我在这方面不是超级方便,我想也许我们已经下载了 gif 并以字节为单位,并可能存储它,就未来的任务而言,剩下的就是从Firebase,然后将其渲染为 gif,而不是从 api 调用和重新下载。让我知道这是否有任何改变,谢谢! 如果您从 Firebase 获取字节,您将从 Firebase 下载字节,这与从 Firebase 下载 gif 完全相同。无论哪种方式,字节都是字节。还。 渲染为 gif 只是一组字节,不涉及渲染。不确定 从 API 重新下载 是什么意思,因为 Firebase 的作用是“下载”。它是一个在线实时数据库,与它的任何交互都会被下载/上传。例外情况是,如果您暂时断开连接,这就是持久性的来源。也许您认为 Firebase 是一个本地数据库? 【参考方案1】:可以存储图片的数据
let imageData = try? Data(contentsOf: url)
Firebase putData function
但是您仍然需要使用 firebase getData 再次下载它,因此您可以使用 CoreData / Realm 在您的应用程序中创建一个简单的数据库结构,将每个 gif 与其下载的时间戳关联,然后将其上传到 Firebase 并更新您的本地数据库有了这些数据
顺便说一句避免使用Data(contentsOf
,因为它会阻塞主线程直到获取日期,所以在后台线程中使用它
【讨论】:
以上是关于在 Firebase 中存储下载的 Gif的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Firebase 存储中下载图像并将其存储在颤动的列表中 [关闭]