Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在Firebase上存储图像不工作_Ios_Firebase_Firebase Storage - Fatal编程技术网

Ios 在Firebase上存储图像不工作

Ios 在Firebase上存储图像不工作,ios,firebase,firebase-storage,Ios,Firebase,Firebase Storage,我目前正在尝试将图像上载到Firebase存储。目前,该图像正在上传,因为我可以从Firebase控制台下载它,但它不允许我继续关闭。我不确定这是基本的Firebase误解还是iOS。如果我能提供更多信息,请告诉我 var storageRef : FIRStorageReference = FIRStorageReference() if let num = num { storageRef = FIRStorage.storage().reference().

我目前正在尝试将图像上载到Firebase存储。目前,该图像正在上传,因为我可以从Firebase控制台下载它,但它不允许我继续关闭。我不确定这是基本的Firebase误解还是iOS。如果我能提供更多信息,请告诉我

    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
            }
        }
    }

同样,我没有通过“上传数据”打印语句。

似乎您的图像太大(8.66MB)。我建议使用进度观察来了解上传数据的进度。使用下面的代码

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.
}

好吧,很明显有一些错误正在发生。除了成功之外,还要观察其他的事情,怎么样?让我们看看你在控制台里看到了什么。失败和停顿。我仍然什么也看不到。我应该试试别的吗?这个代码叫什么?是否在调用此方法后立即被销毁的某个短暂对象中?您应该在其中一个方法中看到某种输出(
.success
/
.failure
),除非方法
put
根本无法执行。@sschunara解决了以下问题:上传时间比我预期的要长得多。谢谢你的帮助!