使用 Firebase 上传更新进度条
update progress bar with Firebase uploading
我尝试在 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");
}
});
更改 progress
计算中的项分组以强制转换为浮动。正如您现在的代码一样,您正在划分两个 long。除法的结果在getBytesTransferred() == getTotalByteCount()
之前都是0,然后就是1。
double progress = (100.0 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount();
当您将数据发送到存储时,您可以观察上传的进度。
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))")
})
我尝试在 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");
}
});
更改 progress
计算中的项分组以强制转换为浮动。正如您现在的代码一样,您正在划分两个 long。除法的结果在getBytesTransferred() == getTotalByteCount()
之前都是0,然后就是1。
double progress = (100.0 * taskSnapshot.getBytesTransferred()) / taskSnapshot.getTotalByteCount();
当您将数据发送到存储时,您可以观察上传的进度。
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))")
})