web-dev-qa-db-ja.com

Firebaseのアップロードで進行状況バーを更新する

Firebaseでのファイルのアップロードに進行状況バーを追加しようとしました。ただし、残念ながらアップロードの進行状況を示すものではありません。 logcatと進行状況バーの両方が、ファイルが100%に達したときにのみ示す

   uploadTask.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
                double progress = 100.0 * (taskSnapshot.getBytesTransferred() / taskSnapshot.getTotalByteCount());
                System.out.println("Upload is " + progress + "% done");
            int currentprogress = (int) progress;
                progressBar.setProgress(currentprogress);
            }
        }).addOnPausedListener(new OnPausedListener<UploadTask.TaskSnapshot>() {
            @Override
            public void onPaused(UploadTask.TaskSnapshot taskSnapshot) {
                System.out.println("Upload is paused");
            }
        });
13
APP Bird

progressの計算で用語のグループ化を変更して、変換を強制的に浮動にします。あなたのコードが今あるので、あなたは2つのlongを分けています。除算の結果はgetBytesTransferred() == getTotalByteCount()まで0になり、その後1になります。

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

ストレージにデータを送信しているときに、アップロードしているものの進行状況を観察できます。

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))")
})
0
Austin Betzer