【问题标题】:How to upload an Image to Firebase Storage using Kotlin in Android Q如何在 Android Q 中使用 Kotlin 将图像上传到 Firebase 存储
【发布时间】:2020-08-19 22:18:50
【问题描述】:

我已经尝试过旧方法
var bitmap =MediaStore.Images.Media.getBitmap() 现已弃用,我上网并没有找到令人满意的方法。请任何建议将图像上传到 Firebase 存储的方法。

【问题讨论】:

  • 您不需要位图即可将图像上传到存储。图片 uri 对你来说已经足够了。
  • 用于显示它您需要一个位图并从图库中选择它。现在已弃用。请尝试理解在给予否定流行之前的语句和方法。
  • 不需要。您从图库而不是位图中获取图像 uri。如果需要,可以将 uri 转换为位图。所以你需要 uri 上传到存储。我没有投反对票

标签: firebase kotlin firebase-storage


【解决方案1】:

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

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)
    })
  }
}

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

【讨论】:

  • Man thx for help ....我理解你的代码,但我被困在 val fileName = UUID.randomUUID().toString() +".jpg" .what Uuid.random 在这里做什么以及为什么在这里使用它
  • 您的代码不起作用
  • imageUrl 从未使用过,所以您是如何实现的
  • 我在上传之前使用了一个唯一的名称。您可以随意更改此地点。
  • 如果需要,可以将 imageUrl 保存到 Firebase 数据库。我向您展示了如何上传图片的网址。
猜你喜欢
  • 2022-11-11
  • 2021-09-18
  • 2017-03-27
  • 2020-09-25
  • 2021-07-30
  • 1970-01-01
  • 1970-01-01
  • 2017-09-25
相关资源
最近更新 更多