![](/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.