下载Firebase存储URL不起作用

时间:2018-12-25 21:28:44

标签: swift firebase firebase-storage

我有一张图像已上传到Firebase存储,但是我无法获取其中的downloadURL来保存到数据库中。

我已经阅读了很多关于StackOverflow的帖子,但是对我来说没有任何解决方法。该图像已加载到存储中,但错误表明该图像不存在。

  let image = self.selectedImage
  let imageData = UIImageJPEGRepresentation(image, 0.1) 
  let storageRef = Storage.storage().reference().child(uid)
  storageRef.putData(imageData, metadata: nil) // i know that i can use a completion here but i left it for now 
  storageRef.downloadURL { url, error in
        if let error = error {
            print(error)
        } else {
            // do sth. else
        }
    }

这些是我得到的错误:

FIRStorageErrorDomain Code=-13010 "Object W002MjRvi0d8JfVwImUJhH0ph2O2 does not exist."UserInfo={object=W002MjRvi0d8JfVwImUJhH0ph2O2,   
 ResponseBody={
  "error": {
    "code": 404,
    "message": "Not Found.  Could not get object"
  }
}
  

ResponseErrorDomain = com.google.HTTPStatus,ResponseErrorCode = 404}

1 个答案:

答案 0 :(得分:0)

请检查存储规则

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth!=null;
    }
  }
}

在您的ViewController中

import Firebase
import FirebaseAuth
import ImageIO


var imgData: NSData = NSData(data: UIImageJPEGRepresentation((self.img_Photo?.image)!, 0.5)!)
self.uploadProfileImageToFirebase(data: imgData)



func uploadProfileImageToFirebase(data:NSData){
    guard let userID = Auth.auth().currentUser?.uid else {
                return
            }
    let storageRef = Storage.storage().reference().child(“Images”).child(userID)
    if data != nil {
        storageRef.putData(data as Data, metadata: nil, completion: { (metadata, error) in
            if(error != nil){
                print(error)
                return
            }
            // Fetch the download URL
            storageRef.downloadURL { url, error in
                if let error = error {
                    // Handle any errors
                    if(error != nil){
                        print(error)
                        return
                    }
                } else {
                    // Get the download URL for 'images/stars.jpg'
                    let urlStr:String = (url?.absoluteString) ?? ""

                }
            }
        })
    }

}