我正在尝试将图像上传到Firebase存储,然后将用户配置文件保存到数据库中。
但似乎没有执行storageRef.putData方法 - >“in put data closure”永远不会打印。 (打印“uploadProfileImage called”。)
这是在Auth.auth()。createUser闭包中调用的函数。
func uploadProfileImage(_ image:UIImage, completion: @escaping ((_ url:URL?)->())) {
print("uploadProfileImage called")
guard let uid = Auth.auth().currentUser?.uid else { return }
let storageRef = Storage.storage().reference().child("user/\(uid)")
guard let imageData = image.jpegData(compressionQuality: 0.75) else { return }
let metaData = StorageMetadata()
metaData.contentType = "image/jpg"
storageRef.putData(imageData, metadata: metaData) { metaData, error in
print("In put data closure")
if error == nil, metaData != nil {
storageRef.downloadURL(completion: { (url, error) in
if let error = error {
print("url error")
} else {
completion(url?.absoluteURL)
}
})
}
}
}
但是我可以在firebase存储中看到图像,所以它被上传了。为了保存个人资料,我需要这个图片的网址。
谢谢你的帮助!
//检查一下,希望对你有所帮助!
func firebaseimage(){
let uid = Auth.auth().currentUser?.uid
let storageRef = Storage.storage().reference().child("image").child(useruid)
storageRef.putData(imagedata, metadata: nil, completion: { (metadatas, error) in
if error != nil {
self.visualView.isHidden = true
print("Couldn't Upload Image")
} else {
print("Uploaded")
print(metadatas!)
storageRef.downloadURL(completion: { (url, error) in
if error != nil {
print(error!)
return
}
if url != nil {
let imageurl = String(describing: url!)
}
})
}
})
}
只需在podfile中修复'FirebaseInstanceID'到版本'2.0.0',就会执行putData方法。在podfile中看起来像这样:pod'FirebaseInstanceID','2.0.0'
我正在使用Xcode 10.2和Swift 5,这个技巧仍然可行