2016-09-21 4 views
0

Я использую этот простой код для загрузки изображения в хранилище firebase.Загрузка изображения в хранилище Firebase

let imageName = UUID().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.put(uploadData, metadata: nil, completion: { (data, error) in 
       if error != nil { 
        print(error) 

       } else { 
        print("Image Uploaded Succesfully") 
        let profileImageUrl = data?.downloadURL()?.absoluteString 
      }  

Я получаю эту ошибку:

[Generic] Creating an image format with an unknown type is an error 

На самом деле тип преобразования и изображения все PNG! так почему я продолжаю получать эту ошибку!

Изображение загружено из alpum или камеры, как здесь:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { 
    let theInfo:NSDictionary = info as NSDictionary 
    let img:UIImage = theInfo.object(forKey: UIImagePickerControllerOriginalImage) as! UIImage 
    ImageView.image = img 
    self.dismiss(animated: true, completion: nil) 
} 

@IBAction func AddPictureBtnAction(_ sender: AnyObject) { 
    // addPictureBtnAtion.enabled = false 
    let alertController : UIAlertController = UIAlertController(title: "أضف جهازًا", message: "التقط صورة من الكاميرا أو اختر من الألبوم", preferredStyle: .actionSheet) 

    let cameraAction : UIAlertAction = UIAlertAction(title: "صورة من الكاميرا", style: .default, handler: {(cameraAction) in 
     print("camera Selected...") 

     if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera) == true { 

      self.imagePicker.sourceType = .camera 
      self.present() 

     }else{ 
      self.present(self.showAlert("عذرًا", Message: "الكاميرا ليست متاحة في هذا الجهاز أو تم منع الوصول لها!"), animated: true, completion: nil) 

     } 

    }) 

    let libraryAction : UIAlertAction = UIAlertAction(title: "صورة من الألبوم", style: .default, handler: {(libraryAction) in 

     print("Photo library selected....") 

     if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.photoLibrary) == true { 

      self.imagePicker.sourceType = .photoLibrary 
      self.present() 

     }else{ 

      self.present(self.showAlert("عذرًا", Message: "ألبوم الصور ليس متاحًا في هذا الجهاز أو تم منع الوصول له!"), animated: true, completion: nil) 
     } 
    }) 

    let cancelAction : UIAlertAction = UIAlertAction(title: "إلغاء", style: .cancel , handler: {(cancelActn) in 
     print("Cancel action was pressed") 
    }) 

    alertController.addAction(cameraAction) 

    alertController.addAction(libraryAction) 

    alertController.addAction(cancelAction) 

    alertController.popoverPresentationController?.sourceView = view 
    alertController.popoverPresentationController?.sourceRect = view.frame 

    self.present(alertController, animated: true, completion: nil) 
} 


func present(){ 
    self.present(imagePicker, animated: true, completion: nil) 
} 


/* func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 
print("info of the pic reached :\(info) ") 
self.imagePicker.dismissViewControllerAnimated(true, completion: nil) 

} */ 

//Show Alert 
func showAlert(_ Title : String!, Message : String!) -> UIAlertController { 

    let alertController : UIAlertController = UIAlertController(title: Title, message: Message, preferredStyle: .alert) 
    let okAction : UIAlertAction = UIAlertAction(title: "Ok", style: .default) { (alert) in 
     print("User pressed ok function") 

    } 
    alertController.addAction(okAction) 
    alertController.popoverPresentationController?.sourceView = view 
    alertController.popoverPresentationController?.sourceRect = view.frame 
    return alertController 
} 
+0

Что-то не так с вашей self.ImageView.image! –

+0

избавиться от png вашего ребенка ("\ (imageName) .png") –

ответ

0

Добавить «_» в параметр в вашем методе imagePicker.

func imagePickerController(_ picker: UIImagePickerController ... 

Затем загрузить: -

//if let uploadData = UIImagePNGRepresentation(UIImage(cgImage: self.imageView.image! as! CGImage, scale: 1.0, orientation: .up)) as? NSData { 
    if let uploadData = UIImagePNGRepresentation(self.ImageView.image!) as? NSData { 



     storageRef.put(uploadData!, metadata: nil, completion: { (metadata, error) in 
     if error != nil { 
       print(error) 

      } else { 
       print("Image Uploaded Succesfully") 
       let profileImageUrl = data?.downloadURL()?.absoluteString 
     } 
    }) 
    } 
+0

Вы должны использовать metaData в profileImageUrl вместо данных – Mariah

+0

Все еще получать: '[Generic] Создание формата изображения с неизвестным типом является ошибкой – Mariah

+0

В этой функции есть подчеркивание! – Mariah

Смежные вопросы