swift - 如何从 Firebase 存储中检索配置文件图像
问题描述
我想知道如何取回已存储到 Firebase 存储的图像,以便将其显示为用户个人资料图像?
private let storage = Storage.storage().reference()
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let image = info[.originalImage] as? UIImage, let imageData = image.pngData() {
imageView.image = image
let storageRef = Storage.storage().reference().child("ProfileImages").child("profile.png")
let metaData = StorageMetadata()
metaData.contentType = "image/png"
storageRef.putData(imageData, metadata: metaData) { (metaData, error) in
if error == nil, metaData != nil {
storageRef.downloadURL { url, error in
if let url = url {
print(url)//URL of the profile image
self.saveProfileImageUrlInUserDetails(url: url)
}
}
} else {
print(error?.localizedDescription as Any)//upload failed
}
}
}
picker.dismiss(animated: true, completion: nil)
}
func saveProfileImageUrlInUserDetails(url: URL) {
let changeRequest = Auth.auth().currentUser?.createProfileChangeRequest()
changeRequest?.photoURL = url
changeRequest?.commitChanges(completion: { error in
if error == nil {
//saved
} else {
print(error?.localizedDescription as Any)//failed to udpate
}
})
}
解决方案
推荐阅读
- javascript - 为什么 console.log(value) 返回一个空字符串?
- html - 在 HTML 中的 jpg 上调整和覆盖 SVG 图像
- python - 如何配对列表的每两个元素?
- perl - Perl - Mojolicious Webpack 无法从文件加载应用程序
- java - CAS 覆盖与 CAS 管理覆盖错误
- android - 如何在没有任何延迟的情况下在android中循环播放音频文件?
- attributes - 公共、受保护和私有属性可访问性
- mysql - 相乘相加后取最大值
- multiple-inheritance - 关于致命钻石问题(多重继承)的问题
- html - Do HTML5 custom elements have any drawbacks compared to classes?