繁体   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