我需要在从Firebase数据库上传/下载数据时显示进度。 我能得到它吗?。我在Firebase存储中看到过,但我没有在Firebase数据库中看到过。
答案 0 :(得分:1)
我建议查看this post,因为它可以帮助您了解如何使用某些内置数据引用来确定上传进度。虽然iOS的不,但它解释了如何衡量上传进度的思维过程。
您可以随时使用进度监视器:
let observer = uploadTask.observeStatus(.Progress) { snapshot in
print(snapshot.progress) // NSProgress object
}
至于FrankvanPuffelen所说的,实际上没有工具可以满足你的要求。但是,正如Jay所述,您可以根据您正在阅读/撰写的 来确定任务的“进度”。
比如说你正在写(上传)10张照片。对于每张成功写入(上传)的照片,您只需将某种进度表增加1/10即可。
用户设备上某些本地文件的示例:
// Some image on the device
let localFile = URL(string: "<PATH>")!
// Make a reference to the file that needs to be uploaded
let riversRef = storageRef.child("chicken.jpg")
// Upload the file to the path you specified
let uploadTask = riversRef.putFile(from: localFile, metadata: nil) { metadata, error in
if let error = error {
// Whoops, something went wrong :(
}
else {
// Tada! Uploaded file
someCountVariable += 1
// If needed / applicable
// let downloadURL = metadata!.downloadURL()
}
}
当然,对于一(1)项,你将从0变为100(...快速 - 向Drake喊出),但这可以嵌套在一些循环中,循环遍历要上传的一些项目列表。然后每个项目成功上传增量。
如果您需要上传多个图片以外的对象,这在请求方面会更加昂贵,但出于此目的,这将为您提供良好的可视/数字方式跟踪至少多少项目可以成功上传。
如果您 真的 想要深入了解细节,您可以随时尝试检查当前的连接强度以确定相对数据传输速度,并与之交叉你正在尝试的当前任务。根据 应该 的过程需要多长时间,这可能会让您至少某些估算进度。
希望其中一些有助于/指出正确的方向。快乐的编码!
答案 1 :(得分:0)
val bytesTransferred=taskSnapshot.bytesTransferred.toFloat()
val totalByteCount=taskSnapshot.totalByteCount.toFloat()
val progress = bytesTransferred / totalByteCount
Log.d("progress", (progress*100).toString())
Log.d("progressDivide", (bytesTransferred / totalByteCount).toString())
Log.d("progressbytesTransferred", bytesTransferred.toString())
Log.d("progresstotalByteCount", totalByteCount.toString())