swift - 使用 Swift 在 Firestore 中发送表单数据
问题描述
我在我的应用程序中使用 Firestore,我有一个表单,其中有一个图像、名称和包含名称和图像的数组。现在我希望它发送到 Firestore DB。我正在尝试这样,
func saveTeamAPI()
{
let image = teamImage.image
let data = image!.jpegData(compressionQuality: 1.0)
// set upload path
let db = Firestore.firestore()
var ref: DocumentReference? = nil
ref = db.collection("Team").addDocument(data: [
"teamName": teamNameTxt.text!,
"teamImage": data!,
"players": playerArray
]) { err in
if let err = err {
print("Error adding document: \(err)")
} else {
print("Document added with ID: \(ref!.documentID)")
}
}
}
我对如何在 Firestore 中发送图像以及一系列名称和图像感到困惑?
我该如何解决这个问题?
解决方案
我建议您使用 Firebase Storage,因为它是一种存储图像的有效方式。以下是您的操作方法: 1) 循环遍历一组图像并将它们一张一张上传到存储中。2) 每次成功上传后,获取图片 url 并将其附加到名为 imagesURLs 的数组中。
let storage = Storage.storage()
let storageRef = storage.reference()
var imagesURLs = [String]()
for image in images.enumerated() {
let newImageRef = storageRef.child(/\(image.0)avatar.jpg")
let data = image.jpegData(compressionQuality: 0.0)
_ = newImageRef.putData(data!, metadata: nil) { (metadata, error) in
guard metadata != nil else {
print(error as Any)
return
}
newImageRef.downloadURL(completion: { (url, error) in
guard url != nil else {
return
}
print("Avatar uploaded: \(url!.absoluteString)")
imagesURLs.append(url!.absoluteString)
})
}
}
获取所有 url 后,您可以使用 Firestore 将它们作为“imageURLs”发送:imageURLs
推荐阅读
- c# - 如何将 SSO 与 RingCentral C# SDK 一起使用?
- performance - 在 STL 中使用 int 数组或 unordered_map 进行散列?
- sql - 强制现有行是唯一的
- hibernate - 如何在 Netbeans 中为 Hibernate 生成 DAO?
- django - Django:表单的初始值
- sql - 未受过 SQL 培训的人提出的 SQL 查询问题
- image - 混合中值滤波器如何在边缘工作?
- node.js - 未定义带有 Angular 窗口的 Dotnet 核心
- regex - 如何限制正则表达式中的可选空格匹配
- iot - LoRa:应用层为每个接收到的传输接收分段数据包?