Firebase Firestore iOS:如何将图像保存到 Firestore 中的集合中?
Firebase Firestore iOS: How can I save images to a collection in the firestore?
所以我有一个应用程序,用户可以在其中向地图添加注释,我希望这些创建的注释对每个用户都是可见和可访问的。我正在尝试将注释数据写入 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 或任何东西。感谢您的帮助!
一般来说,Firestore 不适合像图片这样的大型二进制数据。首选方法是使用 Cloud Storage for Firebase 存储二进制数据,并使用 Firestore 将该图像的路径存储在您上传它的存储桶中。
所以我有一个应用程序,用户可以在其中向地图添加注释,我希望这些创建的注释对每个用户都是可见和可访问的。我正在尝试将注释数据写入 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 或任何东西。感谢您的帮助!
一般来说,Firestore 不适合像图片这样的大型二进制数据。首选方法是使用 Cloud Storage for Firebase 存储二进制数据,并使用 Firestore 将该图像的路径存储在您上传它的存储桶中。