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
