2016-06-07 22 views
1

Ich habe ein Bild in den Firebase-Speicher gespeichert und auch die ImageURL in Firebase-Datenbank gespeichert, aber wie kann ich das Bild von der URL in Firebase-Datenbank zurück erhalten? Hier ist, wie ich es speichernFirebase Image von URL abrufen mit Firebase-Datenbank speichern

func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) { 
    userPhoto.image = image 
    dismissViewControllerAnimated(true, completion: nil) 
    var data = NSData() 
    data = UIImageJPEGRepresentation(userPhoto.image!, 0.8)! 
    // set upload path 
    let filePath = "\(FIRAuth.auth()!.currentUser!.uid)/\("userPhoto")" 
    let metaData = FIRStorageMetadata() 
    metaData.contentType = "image/jpg" 
    self.storageRef.child(filePath).putData(data, metadata: metaData){(metaData,error) in 
     if let error = error { 
      print(error.localizedDescription) 
      return 
     } else { 
      // store downloadURL 
      let downloadURL = metaData!.downloadURL()!.absoluteString 
      // store downloadURL at database 
      self.databaseRef.child("users").child(FIRAuth.auth()!.currentUser!.uid).updateChildValues(["userPhoto": downloadURL]) 
     } 
    } 
} 

Antwort

2

Hier ist eine Möglichkeit, es zu tun, durch die das Herunterladen von Daten und dann ein UIImage für sie zu schaffen:

self.storage.referenceForURL(url).dataWithMaxSize(25 * 1024 * 1024, completion: { (data, error) -> Void in 
    let image = UIImage(data: data!) 
    chatMessage.image = image! 
    self.messages.append(chatMessage) 
    self.tableView.reloadData() 
    self.scrollToBottom() 
}) 

Dieser Code stammt aus dem Zero To App talk at Google I/O. Vollständiger Code ist verfügbar in this gist

+0

Danke Frank! self.storage.referenceForURL (url) .dataWithMaxSize ist was ich brauche! Ich habe mein Problem gelöst. –