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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios将图像上传到Firebase但是当我尝试下载时却不是这样吗?相关的知识,希望对你有一定的参考价值。

我试图将我的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)
                    }
                })

            }
        }
    }
}

提前谢谢你的帮助

答案

我想您正在尝试下载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

以上是关于ios将图像上传到Firebase但是当我尝试下载时却不是这样吗?的主要内容,如果未能解决你的问题,请参考以下文章

当我尝试将图像上传到 Firebase 存储时,putFile 在 kotlin 中不起作用

将相机图像上传到 Firebase

Firebase-iOS 存储错误代码 -13000:无法完成上传

将图像从颤振上传到火力基地(没有任何反应)

文件上传到 Firebase 存储不起作用(“存储/无效参数”)

无法从 python 服务器将图像上传到 Firebase 存储