FirebaseImageStore in Android
public class FirebaseImageStore {
private StorageReference storageReference;
public FirebaseImageStore() {
storageReference = FirebaseStorage.getInstance().getReference();
}
public void uploadImage(Uri imageUri, String imageName, final OnImageUploadedListener listener) {
StorageReference imageRef = storageReference.child(imageName);
imageRef.putFile(imageUri)
.addOnSuccessListener(taskSnapshot -> {
imageRef.getDownloadUrl().addOnSuccessListener(uri -> {
listener.onImageUploaded(uri);
});
})
.addOnFailureListener(e -> {
listener.onImageUploadFailed(e.getMessage());
});
}
public void getImage(String imageName, final OnImageDownloadedListener listener) {
StorageReference imageRef = storageReference.child(imageName);
imageRef.getDownloadUrl()
.addOnSuccessListener(uri -> {
listener.onImageDownloaded(uri);
})
.addOnFailureListener(e -> {
listener.onImageDownloadFailed(e.getMessage());
});
}
public void deleteImage(String imageName, final OnImageDeletedListener listener) {
StorageReference imageRef = storageReference.child(imageName);
imageRef.delete()
.addOnSuccessListener(aVoid -> {
listener.onImageDeleted();
})
.addOnFailureListener(e -> {
listener.onImageDeleteFailed(e.getMessage());
});
}
public void updateImage(Uri imageUri, String imageName, final OnImageUploadedListener listener) {
deleteImage(imageName, new OnImageDeletedListener() {
@Override
public void onImageDeleted() {
uploadImage(imageUri, imageName, listener);
}
@Override
public void onImageDeleteFailed(String message) {
listener.onImageUploadFailed(message);
}
});
}
public interface OnImageUploadedListener {
void onImageUploaded(Uri downloadUri);
void onImageUploadFailed(String message);
}
public interface OnImageDownloadedListener {
void onImageDownloaded(Uri downloadUri);
void onImageDownloadFailed(String message);
}
public interface OnImageDeletedListener {
void onImageDeleted();
void onImageDeleteFailed(String message);
}
}
FirebaseImageStore firebaseImageStore = new FirebaseImageStore();
Uri imageUri = Uri.fromFile(new File("path/to/image"));
String imageName = "my_image.jpg";
firebaseImageStore.uploadImage(imageUri, imageName, new FirebaseImageStore.OnImageUploadedListener() {
@Override
public void onImageUploaded(Uri downloadUri) {
// Image uploaded successfully, do something with downloadUri
}
@Override
public void onImageUploadFailed(String message) {
// Image upload failed, handle error
}
});