首页 > 解决方案 > UploadTask(Google Play 服务)在进程重启时继续上传

问题描述

我使用 UploadTask 将文件上传到 Firebase 存储,重新启动该过程后如何继续上传文件?每次我尝试上传未完全上传的文件时,上传都会从头开始。

 private fun uploadFromUri(fileUri: Uri) {
        val fileFromUri = Uri.fromFile(File(Utils.getPath(this, fileUri)))

        val photoRef = storageRef.child("files")
            .child(fileFromUri.lastPathSegment ?: "_file_")

        val metadata = StorageMetadata.Builder()
            .setCustomMetadata("fileName", fileFromUri.lastPathSegment)
            .build()

            photoRef.putFile(fileUri, metadata).addOnProgressListener { taskSnapshot ->
            showProgressNotification(
                getString(R.string.progress_uploading),
                taskSnapshot.bytesTransferred,
                taskSnapshot.totalByteCount
            )
        }.continueWithTask { task ->
            if (!task.isSuccessful) {
                throw task.exception!!
            }

            photoRef.downloadUrl
        }.addOnSuccessListener { downloadUri ->
            broadcastUploadFinished(downloadUri, fileUri)
            showUploadFinishedNotification(downloadUri, fileUri)
        }.addOnFailureListener { exception ->
            broadcastUploadFinished(null, fileUri)
            showUploadFinishedNotification(null, fileUri)
        }
   }

标签: androidfirebasegoogle-cloud-storagefirebase-storage

解决方案


如果该过程在之前的上传过程中终止,则无法继续上传。Cloud Storage SDK 根本不这样做。相反,您应该使用某种机制来使进程更有可能在完成上传所需的时间内保持活动状态,例如前台服务。


推荐阅读