使用Firebase上传更新进度条

时间:2016-07-09 04:14:58

标签: android firebase firebase-storage

我尝试添加进度条以在firebase上上传文件。但不幸的是,它并不表示上传进度。 logcat&进度条仅指示文件何时达到100%

$timeout(function () {
    // set fit-to-image zoom level
    var zoomOut = initialZoom - (getMaxZoom() - 2);
    $scope.mapRef.setZoom(zoomOut, {animate: false});

    // set minimum zoom to the fit-to-image level
    $scope.mapRef.options.minZoom = zoomOut;

    // add the image overlay,
    // so that it covers the entire map
    L.imageOverlay($scope.imageUrl, bounds).addTo($scope.mapRef);

    // load cameras after the imageOverlay has been added
    callback();

    }, 250);

2 个答案:

答案 0 :(得分:21)

更改progress计算中的术语分组,以强制转换为浮动。正如你的代码现在,你正在划分两个长。除法getBytesTransferred() == getTotalByteCount()之前,除法的结果为0,然后它将为1。

 double progress = (100.0 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount();

答案 1 :(得分:0)

将数据发送到存储时,您可以观察正在上传的内容的进度。

let uploadTask = profileRef.putData(data, metadata: metadata) { (metadata, error) in
     if let error = error {
              // Awesome error handling 
     }
}

现在您已经开始向上发送数据,请观察所做的更改。您取回的快照具有名为 fractionCompleted 的属性。您可以将进度条的最小值和最大值设置为0和1,并将该值设置为完成分数。或者,如果您愿意,只显示上传回来的百分比。

task.observe(.progress, handler: { (snap) in
   print("Our upload progress is: \(String(describing: snap.progress?.fractionCompleted))")
})