簡體   English   中英

當將文件上傳為putStream時,Android中的Firebase存儲在onProgressListener TaskSnapshot.getTotalByteCount()中返回-1

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM