gpt4 book ai didi

ios - 将错误的图片上传到我的 Firebase 存储

转载 作者:行者123 更新时间:2023-11-28 12:34:45 25 4
gpt4 key购买 nike

一切正常。我看到一张图片正在上传到我的 Firebase 存储中,唯一的问题是,它是我作为图片 View 放置的图片,而不是从相机胶卷中选择的图片。

import UIKit
import Firebase

class ProfileViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

@IBOutlet weak var profilePicture: UIImageView!

@IBAction func dismissButton(_ sender: Any) {
self.dismiss(animated: true, completion: nil)
}

override func viewDidLoad() {
super.viewDidLoad()
profilePicture.translatesAutoresizingMaskIntoConstraints = false
profilePicture.addGestureRecognizer(UITapGestureRecognizer(target:self, action: #selector(handleSelectProfileImageView)))
guard let uid = FIRAuth.auth()?.currentUser?.uid else {
return
}

let imageName = NSUUID().uuidString
let storageRef = FIRStorage.storage().reference().child("Profile_Images").child("\(imageName).jpg")

if let uploadData = UIImageJPEGRepresentation(self.profilePicture.image!, 0.1){
storageRef.put(uploadData, metadata: nil, completion: { (metadata, error) in

if error != nil{
print(error as Any)
return
}
if let profileImageURL = metadata?.downloadURL()?.absoluteString {
let values = ["profileImageUrl": profileImageURL];

self.registerUserIntoDatabaseWithUID(uid: uid, values: values as [String : AnyObject])
}
})
}
}
private func registerUserIntoDatabaseWithUID(uid: String, values:[String: AnyObject]) {
let ref = FIRDatabase.database().reference(fromURL:"")
let usersReference = ref.child("Users").child(uid)
usersReference.updateChildValues(values, withCompletionBlock: { (err,ref) in

if err != nil {
print(err as Any)
return
}


})
}


func handleSelectProfileImageView() {
let picker = UIImagePickerController()
picker.delegate = self
picker.allowsEditing = true

present(picker, animated: true, completion:nil)

}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

var selectedImageFromPicker:UIImage?
if let editedImage = info["UIImagePickerControllerEditedImage"] as? UIImage{
selectedImageFromPicker = editedImage
}else if let originalImage = info["UIIMagePickerControllerOriginalImage"] as? UIImage{

selectedImageFromPicker = originalImage

}
if let selectedImage = selectedImageFromPicker{
profilePicture.image = selectedImage
}

dismiss(animated: true, completion: nil)

}

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
print("canceled picker")
dismiss(animated: true, completion: nil)

}

}

最佳答案

您正在 viewDidLoad 的 imageView 中上传图像。因此,它将始终上传您作为占位符放入 imageView 中的图像。

看这个例子:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

var selectedImageFromPicker: UIImage?

if let editedImage =
info["UIImagePickerControllerEditedImage"] as? UIImage {
selectedImageFromPicker = editedImage
} else if let originalImage =
info["UIImagePickerControllerOriginalImage"] as? UIImage{
selectedImageFromPicker = originalImage
}

if let selectedImage = selectedImageFromPicker {
updateAvatarImageInFirebase(image: selectedImage)
}

dismiss(animated: true, completion: nil)
}


func updateAvatarImageInFirebase(image: UIImage){

let user = FIRAuth.auth()?.currentUser

guard let uid = user?.uid else {
return
}

if user != nil {
let storageRef = FIRStorage.storage().reference().child("users").child(uid).child("profileImage.jpg")

if let uploadData = UIImageJPEGRepresentation(image, 0.2) {
storageRef.put(uploadData, metadata: nil, completion: { (metadata, error) in

if error != nil {
print(error!)
return
}

if let profileImageUrl = metadata?.downloadURL()?.absoluteString {
FIRDatabase.database().reference().child("users").child(uid).updateChildValues(["profileImageUrl": profileImageUrl])
}
})
}
}
}

关于ios - 将错误的图片上传到我的 Firebase 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41205739/

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