![](/img/trans.png)
[英]What is the difference between putFile() and putStream() methods of StorageReference of Firebase cloud storage?
[英]Firebase storage in Android when upload file as putStream, In onProgressListener TaskSnapshot.getTotalByteCount() returns -1
我正在使用Firebase存储从Android应用上传文件。 从FirebaseStorage
获取文件存储参考后,请使用uploadTask
正确上传文件。 我的发现是,在uploadTask
onProgress
侦听器中, taskSnapshot.getTotalByteCount()
为-1。 相反, taskSnapshot.getBytesTransferred()
给出正确的结果。 是Firebase的错误吗?
Nb:文件正在上传,没有问题。
这是我的代码快照:
try {
uploadTask = fileReference.putStream(new FileInputStream(imageFile));
} catch (Exception e) {
e.printStackTrace();
}
uploadTask.addOnProgressListener(this, new
OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
// here taskSnapshot.getTotalByteCount() is -1
double progressPersentage = ((taskSnapshot
.getBytesTransferred() * 100.0) / taskSnapshot
.getTotalByteCount());// for file transfer
Log.d(this.getClass().getName(), taskSnapshot
.getTotalByteCount() + " Uploading " + (taskSnapshot
.getBytesTransferred()));
}
})
因为流表示未指定长度的字节序列,所以getTotalByteCount()
是未知的并非不合理。
使用putFile()会得到更好的结果:
uploadTask = fileReference.putFile(Uri.fromFile(imageFile));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.