📌  相关文章
📜  Android:如何在 Firebase 存储上上传图像?(1)

📅  最后修改于: 2023-12-03 14:59:17.612000             🧑  作者: Mango

Android:如何在 Firebase 存储上上传图像?

Firebase 是一个由 Google 提供的平台,用于移动和 Web 应用程序的开发。它包含许多功能和服务,如数据库、身份认证、云存储等。

在这篇文章中,我们将探讨如何使用 Firebase 存储上传图像到云端。

准备工作

在开始之前,您需要完成以下步骤:

  1. 创建一个 Firebase 项目并启用存储服务。

  2. 添加 Firebase 存储库的依赖项。

    在您的 build.gradle 文件中,添加以下代码:

    implementation 'com.google.firebase:firebase-storage:19.2.0'
    
  3. 在您的代码中配置 Firebase 存储。

    FirebaseStorage storage = FirebaseStorage.getInstance();
    StorageReference storageRef = storage.getReference();
    
上传图像

上传图像到 Firebase 存储需要以下步骤:

  1. 创建一个引用来存储图像。
StorageReference riversRef = storageRef.child("images/rivers.jpg");

这里,我们使用 child() 方法来创建一个引用(StorageReference)来存储一个名为 "rivers.jpg" 的图像。这个图像将被存储在 "images" 文件夹中。

  1. 创建一个 ByteArrayOutputStream 来将图像数据写入内存中。
Bitmap bitmap = BitmapFactory.decodeFile("path/to/image.jpg");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] data = baos.toByteArray();

在这里,我们将一个图像文件读入内存中,并使用 compress() 方法将其压缩为 JPEG 格式。然后,我们将字节数组(byte[])写入一个 ByteArrayOutputStream 中。现在,我们可以使用 toByteArray() 方法来获取这个字节数组。

  1. 将数据上传到 Firebase 存储。
UploadTask uploadTask = riversRef.putBytes(data);

这里,我们使用 putBytes() 方法将数据上传到 Firebase 存储。这个方法返回一个 UploadTask,我们可以使用它来跟踪上传的进度和结果。

  1. 处理上传的结果。
uploadTask.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
        Log.d(TAG, "Image uploaded successfully");
    }
}).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception exception) {
        Log.e(TAG, "Unable to upload image", exception);
    }
});

使用 addOnSuccessListener() 方法和 addOnFailureListener() 方法来处理上传的结果。在 onSuccess() 方法中,我们可以打印日志来表示图像已成功上传。在 onFailure() 方法中,我们可以打印异常信息,以便确定上传时发生了什么错误。

总结

在本文中,我们介绍了如何使用 Firebase 存储上传图像。这个过程涉及到几个步骤,包括创建一个引用来存储图像,将图像数据写入内存中,将数据上传到 Firebase 存储,以及处理上传结果。最终,我们可以在控制台或其他应用程序中查看上传的图像。