2017-02-27 64 views
1

我目前正在嘗試將圖片上傳到Firebase存儲。目前,該圖片正在上傳,因爲我可以從Firebase控制檯下載該圖片,但它不會讓我繼續關閉。我不確定這是一個基本的Firebase誤解還是iOS。讓我知道我是否可以提供更多信息。在Firebase上存儲圖片無法正常工作

var storageRef : FIRStorageReference = FIRStorageReference() 
    if let num = num { 
     storageRef = FIRStorage.storage().reference().child("\(num).png") 
    } 

    if let uploadData = UIImagePNGRepresentation(profilePictureImageView.image!) { 
     let metadata = FIRStorageMetadata() 
     metadata.contentType = "image/png" 
     print("ABOUT TO STORAGE \(uploadData)") 
     storageRef.put(uploadData, metadata: metadata).observe(.success) { (snapshot) in 
      print("IN STORAGE") 
      let text = snapshot.metadata?.downloadURL()?.absoluteString 
     } 
    } 

只有打印出來,當我調試,我得到的是

關於存儲8663314字節

編輯: 在過去,我也曾嘗試解決此問題這樣做:

if let uploadData = UIImagePNGRepresentation(profilePictureImageView.image!) { 
     print("IN UPLOAD DATA \(uploadData)") 
     storageRef.put(uploadData, metadata: metadata) { [weak self] (metadata,error) in 
      if error != nil { 
       print("ERROR \(error)") 
       return 
      } else { 
       print("NO ERROR") 
      } 

      if let profileImageURL = metadata?.downloadURL()?.absoluteString { 
       self?.profilePicURL = profileImageURL 
      } 
     } 
    } 

同樣,我不會越過「IN UPLOAD DATA」打印語句。

+0

那麼,有顯然有些錯誤怎麼回事。如何觀察別的東西,而不僅僅是「成功」?讓我們看看你在控制檯中得到了什麼。 – Michal

+0

隨着.failure和.pause我仍然沒有看到任何東西。我應該嘗試別的嗎? – Sarah

+0

此代碼在哪裏調用?這個方法被調用後,它是否在某個短暫的對象中被破壞?你應該在這些方法之一中看到某種輸出('.success' /'.failure'),除非方法'put'根本沒有被執行。 – Michal

回答

1

似乎你的圖像太大(8.66 MB)。我建議使用進度觀察來了解上傳數據的進度。使用下面的代碼。

let uploadTask = storageRef.put(uploadData, metadata: metadata) { snapshot, error in 
    if let error = error { 
    // Uh-oh, an error occurred! 
    } else { 
    // Metadata contains file metadata such as size, content-type, and download URL. 
    let downloadURL = snapshot!.downloadURL() 
    } 
} 

uploadTask.observe(.progress) { snapshot in 
    // A progress event occurred track progress percentage here. 
}