如何在Android Q中使用Kotlin将图像上传到Firebase存储

时间:2020-05-05 09:35:59

标签: firebase kotlin firebase-storage

我尝试了较旧的方法
var bitmap = MediaStore.Images.Media.getBitmap()现在已被描述,我浏览了网络,但找不到令人满意的方法。请提出任何将图像上传到Firebase存储的方法。

1 个答案:

答案 0 :(得分:2)

从像这样的图库中选择图片:

private fun selectImageFromGallery() {

val intent = Intent()
intent.type = "image/*"
intent.action = Intent.ACTION_GET_CONTENT
startActivityForResult(
        Intent.createChooser(
            intent,
            "Please select..."
        ),
        GALLERY_REQUEST_CODE
    )
}

onActivityResult像这样:

override fun onActivityResult(
    requestCode: Int,
    resultCode: Int,
    data: Intent?
) {

    super.onActivityResult(
        requestCode,
        resultCode,
        data
    )

    if (requestCode == GALLERY_REQUEST_CODE
        && resultCode == Activity.RESULT_OK
        && data != null
        && data.data != null
    ) {

        // Get the Uri of data
        val file_uri = data.data
        uploadImageToFirebase(file_uri)
    }
 }

上传图片:

private fun uploadImageToFirebase(fileUri: Uri) {
if (fileUri != null) {
val fileName = UUID.randomUUID().toString() +".jpg"

val database = FirebaseDatabase.getInstance()
val refStorage = FirebaseStorage.getInstance().reference.child("images/$fileName")

refStorage.putFile(fileUri)
    .addOnSuccessListener(
        OnSuccessListener<UploadTask.TaskSnapshot> { taskSnapshot ->
            taskSnapshot.storage.downloadUrl.addOnSuccessListener {
                val imageUrl = it.toString()
            }
        })

    ?.addOnFailureListener(OnFailureListener { e ->
        print(e.message)
    })
  }
}

如您所见,您不需要任何位图