gpt4 book ai didi

ios - 尝试将图像添加到Firebase存储中,然后将图像位置添加到Firestore文档中

转载 作者:行者123 更新时间:2023-12-01 16:11:53 26 4
gpt4 key购买 nike

我正在尝试将图像添加到Firebase存储中,然后获取该图像的位置,并将其与其他用户配置文件数据一起存储在Firestore文档中。我试图在用户首次创建帐户时执行所有这些操作。我试图使用图像URL来执行此操作,但这似乎不起作用。当我运行下面的代码时,它将注册一个新用户,并将照片添加到Firebase存储中,但在Firestore数据库中未创建任何文档。我究竟做错了什么?

@objc func handleSignUp() {

//Signup properties
guard let email = emailTextField.text else { return }
guard let password = passwordTextField.text else { return }
guard let fullName = fullNameTextField.text else { return }
guard let username = usernameTextField.text?.lowercased() else { return }

createUser(email: email,
password: password,
fullName: fullName,
userName: username)
}

func createUser(email: String, password: String, fullName: String, userName: String) {
Auth.auth().createUser(withEmail: email, password: password) { (authResult, error) in

//Handle error
if let error = error {
print("DEBUG: Failed to create user with error: ", error.localizedDescription)
return
}

guard let profileImg = self.plusPhotoBtn.imageView?.image else { return }
guard let uploadData = profileImg.jpegData(compressionQuality: 0.3) else { return }

let userID = Auth.auth().currentUser!.uid
let filename = NSUUID().uuidString

//Storage location for photo in Firebase
let storageRef = Storage.storage().reference().child("profile_images").child(userID).child(filename)

storageRef.putData(uploadData, metadata: nil, completion: { (metadata, error) in

//Handle error
if let error = error {
print("Failed to upload image to Firebase Storage with error", error.localizedDescription)
return
}

guard metadata != nil else { return }

let path = storageRef.fullPath;

guard let username = self.usernameTextField.text?.lowercased() else { return }

storageRef.downloadURL { (url, _) in

let data = ["name": fullName,
"username": username,
"profileImagePath": path,
"email" : email] as [String : Any]

self.addDocument(userData: data)
}
})
}
}

最佳答案

我认为您应该在“putData”中添加“downloadURL”部分。

完成放置数据过程后,您应该尝试获取URL,否则它将失败。

试试看,看看是否可行:

@objc func handleSignUp() {

//Signup properties
guard let email = email.text else { return }
guard let password = password.text else { return }
guard let fullName = name.text else { return }
guard let username = name.text?.lowercased() else { return }

createUser(email: email,
password: password,
fullName: fullName,
userName: username)
}

func createUser(email: String, password: String, fullName: String, userName: String) {
Auth.auth().createUser(withEmail: email, password: password) { (authResult, error) in

//Handle error
if let error = error {
print("DEBUG: Failed to create user with error: ", error.localizedDescription)
return
}

guard let profileImg = self.plusPhotoBtn.imageView?.image else { return }
guard let uploadData = profileImg.jpegData(compressionQuality: 0.3) else { return }

let filename = NSUUID().uuidString

//Storage location for photo in Firebase
let storageRef = Storage.storage().reference().child("profile_images").child(filename)

storageRef.putData(uploadData, metadata: nil, completion: { (metadata, error) in

//Handle error
if let error = error {
print("Failed to upload image to Firebase Storage with error", error.localizedDescription)
return
}

guard let metadata = metadata else { return }

guard let username = self.usernameTextField.text?.lowercased() else { return }
storageRef.downloadURL { (url, _) in

guard let downloadURL = url else {
print("DEBUG: Profile image url is nil")
return
}

let data = ["name": fullName,
"username": username,
"profileImageUrl": downloadURL,
"email" : email]

self.addDocument(userData: data)
}
})
}
}

func addDocument(userData: [String: Any]) {
Firestore.firestore().collection("profile_data").addDocument(data: userData) { (err) in
if let err = err {
debugPrint("Error adding document: \(err)")
} else {
self.navigationController?.popViewController(animated: true)
}
}
}

关于ios - 尝试将图像添加到Firebase存储中,然后将图像位置添加到Firestore文档中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62368470/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com