如何检索存储在firebase中的图像以在视图图像视图中显示它

我面临的问题是如何检索存储在firebase中的图像这里是我用来存储图像的代码:

@IBAction func AddDeviceButton(sender: AnyObject) { if DeviceName.text == "" || Description.text == "" || ImageView.image == nil { let alert = UIAlertController(title: "عذرًا", message:"يجب عليك تعبئة معلومات الجهاز كاملة", preferredStyle: .Alert) alert.addAction(UIAlertAction(title: "نعم", style: .Default) { _ in }) self.presentViewController(alert, animated: true){} } else { let imageName = NSUUID().UUIDString let storageRef = FIRStorage.storage().reference().child("Devices_Images").child("\(imageName).png") let metaData = FIRStorageMetadata() metaData.contentType = "image/png" if let uploadData = UIImagePNGRepresentation(self.ImageView.image!) { storageRef.putData(uploadData, metadata: metaData, completion: { (data, error) in if error != nil { print(error) } else { print("Image Uploaded Succesfully") let profileImageUrl = data?.downloadURL()?.absoluteString // let DeviceInfo = [ "ImageUrl":profileImageUrl!, "DeviceName":self.DeviceName.text!, "Description":self.Description.text!, "Category":self.itemSelected ] let DeviceInformation = [ "ImageUrl":profileImageUrl!, "DeviceName":self.DeviceName.text!, "Description":self.Description.text!, "Category":self.itemSelected, "name": self.globalUserName, "email":self.globalEmail , "city": self.globalCity, "phone": self.globalPhone ] self.ref.child("Devices").child(FIRAuth.auth()!.currentUser!.uid).observeSingleEventOfType(.Value, withBlock: {(snapShot) in if snapShot.exists(){ let numberOfDevicesAlreadyInTheDB = snapShot.childrenCount if numberOfDevicesAlreadyInTheDB < 3{ let newDevice = String("Device\(numberOfDevicesAlreadyInTheDB+1)") let userDeviceRef = self.ref.child("Devices").child(FIRAuth.auth()!.currentUser!.uid) userDeviceRef.observeSingleEventOfType(.Value, withBlock: {(userDevices) in if let userDeviceDict = userDevices.value as? NSMutableDictionary{ userDeviceDict.setObject(DeviceInfo,forKey: newDevice) userDeviceRef.setValue(userDeviceDict) } }) } else{ let alert = UIAlertController(title: "عذرًا", message:"يمكنك إضافة ثلاثة أجهزة فقط كحد أقصى", preferredStyle: .Alert) alert.addAction(UIAlertAction(title: "نعم", style: .Default) { _ in }) self.presentViewController(alert, animated: true){} } }else{ self.ref.child("Devices").child(FIRAuth.auth()!.currentUser!.uid).setValue(["Device1" : DeviceInfo]) self.ref.child("UserDevices").childByAutoId().setValue(DeviceInformation) } }) // } }) } } //Big Big Else } //AddDeviceButton 

我只是想从firebase存储加载图像到用户配置文件,这样每次用户登录他的配置文件时,他都可以看到他上传到应用程序的所有图像

我们强烈建议您同时使用Firebase存储和Firebase实时数据库来完成此任务。 这是一个完整的例子:

共享:

 // Firebase services var database: FIRDatabase! var storage: FIRStorage! ... // Initialize Database, Auth, Storage database = FIRDatabase.database() storage = FIRStorage.storage() ... // Initialize an array for your pictures var picArray: [UIImage]() let myUserId = ... // get this from Firebase Auth or some other ID provider 

上传:

 let fileData = NSData() // get data... let storageRef = storage.reference().child("userFiles/\(myUserId)/myFile") storageRef.putData(fileData).observeStatus(.Success) { (snapshot) in // When the image has successfully uploaded, we get it's download URL let downloadURL = snapshot.metadata?.downloadURL()?.absoluteString // Write the download URL to the Realtime Database let dbRef = database.reference().child("userFiles/\(myUserId)/myFile") dbRef.setValue(downloadURL) } 

下载:

 let dbRef = database.reference().child("userFiles/\(myUserId)") dbRef.observeEventType(.ChildAdded, withBlock: { (snapshot) in // Get download URL from snapshot let downloadURL = snapshot.value() as! String // Create a storage reference from the URL let storageRef = storage.referenceFromURL(downloadURL) // Download the data, assuming a max size of 1MB (you can change this as necessary) storageRef.dataWithMaxSize(1 * 1024 * 1024) { (data, error) -> Void in // Create a UIImage, add it to the array let pic = UIImage(data: data) picArray.append(pic) }) }) 

有关更多信息,请参阅零到应用程序:使用Firebase进行开发 ,以及它的相关源代码 ,以获取有关如何执行此操作的实际示例。