ios将图像上传到Firebase但是当我尝试下载时却不是这样吗?

问题描述 投票:0回答:1

我试图将我的userProfile图像上传到Firebase但是,虽然上传成功但是当我通过firebase控制台上的下载链接下载它时,它被下载为Document文件而不是我上传的jpg文件?此外,当我将图像设置为特定图像时,我的UIImage接管了视图控制器中的所有视图。

这是我的代码:

@IBAction func registerRegisterButton(_ sender: UIButton) {
    let userProfileImageRef = self.storage.reference().child("userProfileImage")

    //testing image setup
    self.registerUserProfileImage.image = UIImage(named:"puppy.jpg")

    // Registering user with email
    Auth.auth().createUser(withEmail: registerUserEmailTextField.text!, password: registerUserPasswordTextField.text!) { (user, error) in

        if error != nil {
            print(error)
        } else {
            print("Registration complete")

            // if register succcessful, we upload the user profile image to firebase
            let data = Data()

            //uploading user profile picture
            if let uploadData = UIImagePNGRepresentation(self.registerUserProfileImage.image!) {
                userProfileImageRef.putData(uploadData, metadata: nil, completion: { (metadata, error) in

                    if error != nil {
                        print(error)
                        return
                    } else {
                        print("Success upload!")
                        self.dismiss(animated: true, completion: nil)
                        self.performSegue(withIdentifier: "registrationCompleteSegue", sender: self)
                    }
                })

            }
        }
    }
}

提前谢谢你的帮助

ios swift firebase uiimage firebase-storage
1个回答
0
投票

我想您正在尝试下载Image的URL并将其设置为ImageView。如果是,那么创建一个meta data类型的StorageMetadata并将content type设置为image/jpeg。然后在Firebase Reference的putData方法中传递它,并使用putData方法的metadata参数获取ImageURL。

let metaData = StorageMetadata()
metaData.contentType = "image/jpg"

        if let uploadData = UIImagePNGRepresentation(self.registerUserProfileImage.image!, 0.8) as NSData {

           userProfileImageRef.putData(uploadData as Data, metadata: metaData, completion: { (metadata, error) in

                if error != nil {
                    print(error)
                    return
                } else {
                    print("Success upload!")
                    var imageURL = (metadata?.downloadURLs?[0].absoluteString)!  //Here's your image url. Then just set it to ImageView

                    self.dismiss(animated: true, completion: nil)
                    self.performSegue(withIdentifier: "registrationCompleteSegue", sender: self)
                }
           })
       }

用于设置带URL的图像。请检查此链接https://stackoverflow.com/a/43486949/4608334

© www.soinside.com 2019 - 2024. All rights reserved.