gpt4 book ai didi

ios - 为什么我的 Firebase 存储 URL 没有上传到 Google Cloud Firestore?

转载 作者:可可西里 更新时间:2023-11-01 01:06:57 25 4
gpt4 key购买 nike

我正在尝试允许用户将个人资料照片上传到 Firebase 存储。该图像是在我的应用程序注册过程中上传的。图片正在正确上传到 Firebase 存储,但是下载 URL 没有上传到 Google Cloud Firestore。

我已经尝试更改 String 类型的变量 downloadURL 以保存空的 String。这并没有改变结果。

这是将个人资料照片上传到 Firebase 存储的代码:

func uploadProfilePic() -> String {
guard let imageData = profilePic?.jpegData(compressionQuality: 0.75) else {
print("Unable to get image data.")
return ""
}

let imageID = UUID().uuidString
let profilePhotosRef = Storage.storage().reference().child("profilePhotos/\(imageID).jpg")

let uploadMetadata = StorageMetadata()
uploadMetadata.contentType = "image/jpeg"

var downloadURL = String()
profilePhotosRef.putData(imageData, metadata: uploadMetadata) { (downloadMetadata, err) in
if let err = err {
self.showAlertWithOK(title: "An Error Occurred", message: "There was an error uploading your profile photo. Try again later in Hostend settings.")
print("An error occurred: \(err.localizedDescription)")
}

profilePhotosRef.downloadURL { (url, err) in
if let url = url {
downloadURL = url.absoluteString
}
}
}

return downloadURL
}

这是将个人资料照片下载 URL 上传到 Cloud Firestore 的代码:

db.collection("users").document(uid).setData(["profile_pic_url": uploadProfilePic(), "name": name, "phone_number": phoneNumber, "fcm_token": token, "timestamp": Date()])

uploadProfilePic() 方法返回一个String

我希望图像的下载 URL 会上传到“profile_pic_url”下的 Firestore,但这并没有发生。相反,它只是一个空的 String,即使图像已成功存储到 Firebase 中也是如此。

最佳答案

您不能对包含闭包的函数使用 return 语句,因为该函数将在闭包执行之前返回。

而是更改您的函数以使用完成处理程序,例如

func uploadProfilePic(completion: @escaping (String?, Error?) -> ()) {

然后一旦你得到你的下载 url 调用处理程序。

    profilePhotosRef.downloadURL { (url, err) in
completion(url, err)
}

然后您可以像这样使用此函数来填充对 Cloud Firestore 的调用

   self.uploadProfilePic() { (url, error) in

guard error....

if let url = url {
// do your upload here
}
}

关于ios - 为什么我的 Firebase 存储 URL 没有上传到 Google Cloud Firestore?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57639456/

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