Firebase Firestore iOS:如何将图像保存到 Firestore 中的集合中?
Posted
技术标签:
【中文标题】Firebase Firestore iOS:如何将图像保存到 Firestore 中的集合中?【英文标题】:Firebase Firestore iOS: How can I save images to a collection in the firestore? 【发布时间】:2020-09-01 18:43:05 【问题描述】:所以我有一个应用程序,用户可以在其中向地图添加注释,并且我希望每个用户都可以看到和访问这些创建的注释。我正在尝试将注释数据写入 Firestore,但似乎不支持图像。我还尝试将图像转换为 base64EncodedString,但随后文档超出了 1mb 的大小限制。 (通常为 10 mb 左右)。这是我的代码:
let strBase64UserPickedImage = image?.pngData()?.base64EncodedString()
let strBase64DefaultImage = UIImage(named: "Image-1")?.pngData()?.base64EncodedString()
// User gave both 'warnings' and 'image' values
if warnings != nil && image != nil
db.collection("jumpSpotAnnotations").addDocument(data: [
"title": title,
"coordinate": coords,
"estimatedHeight": estimatedHeight,
"locationDescription": locationDescription,
"warnings": warnings!,
"image": strBase64UserPickedImage!
]) (error) in
if let e = error
print("There was an issue saving data to firestore: \(e)")
else
print("Successfully saved data.")
“if”语句还有更多部分,但它们无关紧要。如何在不超过大小限制的情况下保存图像?如果使用 Firestore 保存图像实际上是不可能的,那么 Firebase 是否有另一种方法?请记住,我正在努力使每个用户都可以访问这些注释,无论它是由谁创建的,我并不是要设置 userDefault 或任何东西。感谢您的帮助!
【问题讨论】:
【参考方案1】:一般来说,Firestore 不适合图像等大型二进制数据。首选方法是使用 Cloud Storage for Firebase 存储二进制数据,并使用 Firestore 将指向该图像的路径存储在您上传的存储桶中。
【讨论】:
我会调查的。谢谢以上是关于Firebase Firestore iOS:如何将图像保存到 Firestore 中的集合中?的主要内容,如果未能解决你的问题,请参考以下文章
在iOS中使用Firebase / Firestore填充tableView时遇到麻烦
如何在 iOS XCUITest 期间配置 Firebase
在我的 iOS 应用程序中实施 pod 'Firebase/Firestore' 后无法运行应用程序
如何在 Swift 中从 Cloud FireStore Firebase 访问特定字段