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
- 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".
- 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");
- 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
- Configura Firebase al teu projecte.
- Crea una referència a la imatge que vols descarregar.
- Descarrega la imatge a la memòria.
- Converteix les dades descarregades en un Bitmap.
- 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
- Introducció a l'autenticació de Firebase
- Autenticació amb correu electrònic i contrasenya
- Autenticació amb xarxes socials
- Gestió d'usuaris
Mòdul 3: Base de dades en temps real de Firebase
- Introducció a la base de dades en temps real
- Lectura i escriptura de dades
- Estructura de dades i regles de seguretat
- Capacitats fora de línia
Mòdul 4: Cloud Firestore
- Introducció a Cloud Firestore
- Model de dades de Firestore
- Operacions CRUD
- Consultes avançades
- Regles de seguretat
Mòdul 5: Emmagatzematge de Firebase
- Introducció a l'emmagatzematge de Firebase
- Carregar fitxers
- Descarregar fitxers
- Metadades de fitxers i seguretat
Mòdul 6: Missatgeria en el núvol de Firebase
- Introducció a la missatgeria en el núvol
- Enviar notificacions
- Gestionar notificacions
- Funcions avançades de missatgeria
Mòdul 7: Analítica de Firebase
Mòdul 8: Funcions de Firebase
Mòdul 9: Monitoratge del rendiment de Firebase
- Introducció al monitoratge del rendiment
- Configuració del monitoratge del rendiment
- Analitzar dades de rendiment