我在我的应用程序中使用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中发送图像以及一系列名称和图像感到困惑?
我该如何解决?
答案 0 :(得分:1)
我建议您使用Firebase Storage,因为它是存储图像的有效方法。操作方法如下:1)遍历一系列图像,并将它们一张一张地上传到存储设备。 2)每次成功上传后,获取图片网址并将其附加到名为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)
})
}
}
获取所有网址后,您可以使用Firestore将其作为“ imageURLs”:imageURLs
发送