En aquest tema, aprendrem com descarregar fitxers des de l'emmagatzematge de Firebase. L'emmagatzematge de Firebase permet emmagatzemar i sincronitzar fitxers directament des de les aplicacions mòbils i web. A més, proporciona una integració perfecta amb altres serveis de Firebase.

Objectius

  • Entendre com descarregar fitxers des de l'emmagatzematge de Firebase.
  • Aprendre a gestionar errors durant la descàrrega.
  • Implementar la descàrrega de fitxers en una aplicació pràctica.

Prerequisits

  • Coneixements bàsics de Firebase.
  • Haver completat els temes anteriors del mòdul d'emmagatzematge de Firebase.

Passos per descarregar fitxers

  1. Configuració inicial

Abans de començar a descarregar fitxers, assegura't que has configurat correctament Firebase al teu projecte. Si no ho has fet, revisa el tema "Configuració de Firebase".

  1. Obtenir una referència al fitxer

Per descarregar un fitxer, primer necessitem obtenir una referència al fitxer que volem descarregar. Utilitzarem el mètode getReference de Firebase Storage.

// Obtenir una instància de FirebaseStorage
FirebaseStorage storage = FirebaseStorage.getInstance();

// Crear una referència al fitxer
StorageReference storageRef = storage.getReference().child("path/to/your/file.jpg");

  1. Descarregar el fitxer

Podem descarregar el fitxer de diverses maneres, com ara descarregar-lo a la memòria, a un fitxer local o obtenir una URL de descàrrega. A continuació, veurem com fer-ho.

3.1 Descarregar a la memòria

final long ONE_MEGABYTE = 1024 * 1024;
storageRef.getBytes(ONE_MEGABYTE).addOnSuccessListener(new OnSuccessListener<byte[]>() {
    @Override
    public void onSuccess(byte[] bytes) {
        // Fitxer descarregat correctament
        // Aquí pots treballar amb les dades del fitxer
    }
}).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception exception) {
        // Error durant la descàrrega
    }
});

3.2 Descarregar a un fitxer local

File localFile = File.createTempFile("images", "jpg");

storageRef.getFile(localFile).addOnSuccessListener(new OnSuccessListener<FileDownloadTask.TaskSnapshot>() {
    @Override
    public void onSuccess(FileDownloadTask.TaskSnapshot taskSnapshot) {
        // Fitxer descarregat correctament
        // El fitxer es troba a localFile
    }
}).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception exception) {
        // Error durant la descàrrega
    }
});

3.3 Obtenir una URL de descàrrega

storageRef.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
    @Override
    public void onSuccess(Uri uri) {
        // Obtinguda la URL de descàrrega
        String downloadUrl = uri.toString();
    }
}).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception exception) {
        // Error durant la descàrrega
    }
});

Gestió d'errors

És important gestionar els errors que poden ocórrer durant la descàrrega de fitxers. Alguns errors comuns inclouen:

  • Object not found: El fitxer no existeix.
  • Unauthorized: L'usuari no té permís per accedir al fitxer.
  • Quota exceeded: S'ha superat la quota d'emmagatzematge.
storageRef.getFile(localFile).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception exception) {
        if (exception instanceof StorageException) {
            StorageException storageException = (StorageException) exception;
            int errorCode = storageException.getErrorCode();
            switch (errorCode) {
                case StorageException.ERROR_OBJECT_NOT_FOUND:
                    // El fitxer no existeix
                    break;
                case StorageException.ERROR_UNAUTHORIZED:
                    // L'usuari no té permís
                    break;
                case StorageException.ERROR_QUOTA_EXCEEDED:
                    // Quota superada
                    break;
                default:
                    // Altres errors
                    break;
            }
        }
    }
});

Exercici pràctic

Descripció

Implementa una aplicació que permeti als usuaris descarregar una imatge des de l'emmagatzematge de Firebase i mostrar-la en una ImageView.

Passos

  1. Configura Firebase al teu projecte.
  2. Crea una referència a la imatge que vols descarregar.
  3. Descarrega la imatge a la memòria.
  4. Converteix les dades descarregades en un Bitmap.
  5. Mostra el Bitmap en una ImageView.

Solució

// Obtenir una instància de FirebaseStorage
FirebaseStorage storage = FirebaseStorage.getInstance();

// Crear una referència al fitxer
StorageReference storageRef = storage.getReference().child("images/myImage.jpg");

// Descarregar a la memòria
final long ONE_MEGABYTE = 1024 * 1024;
storageRef.getBytes(ONE_MEGABYTE).addOnSuccessListener(new OnSuccessListener<byte[]>() {
    @Override
    public void onSuccess(byte[] bytes) {
        // Convertir les dades en un Bitmap
        Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
        
        // Mostrar el Bitmap en una ImageView
        ImageView imageView = findViewById(R.id.imageView);
        imageView.setImageBitmap(bitmap);
    }
}).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception exception) {
        // Error durant la descàrrega
    }
});

Resum

En aquest tema, hem après com descarregar fitxers des de l'emmagatzematge de Firebase. Hem vist com obtenir una referència al fitxer, descarregar-lo a la memòria, a un fitxer local o obtenir una URL de descàrrega. També hem après a gestionar errors comuns durant la descàrrega. Finalment, hem implementat una aplicació pràctica per descarregar i mostrar una imatge.

En el següent tema, explorarem les metadades de fitxers i la seguretat en l'emmagatzematge de Firebase.

Curs de Firebase

Mòdul 1: Introducció a Firebase

Mòdul 2: Autenticació de Firebase

Mòdul 3: Base de dades en temps real de Firebase

Mòdul 4: Cloud Firestore

Mòdul 5: Emmagatzematge de Firebase

Mòdul 6: Missatgeria en el núvol de Firebase

Mòdul 7: Analítica de Firebase

Mòdul 8: Funcions de Firebase

Mòdul 9: Monitoratge del rendiment de Firebase

Mòdul 10: Laboratori de proves de Firebase

Mòdul 11: Temes avançats de Firebase

© Copyright 2024. Tots els drets reservats