Как реализовать загрузку сделанного снимка в firebase? Android java

Нужно реализовать приложение. Вот суть:

-пользователь регистрируется ( auth.createUserWithEmailAndPassword(mailText.getText().toString(), passText.getText().toString()))

-при регистрации у пользователя создаётся личная папка.

-В эту папку он потом может загружает изображения, и потом может посмотреть эти изображения.

-Он может просматривать содержимое папок других пользователей

Так вот, замкнулся на загрузке сделанного изображения в Firebase

Сейчас написано: Регистрация и авторизация пользователя, добавление данных о пользователях в базу(имя, телефон) Создание снимка и запись в ImageView

Подскажите как сделанный снимок загрузить в firebase. И дайте пару подсказок по дальнейшим действиям. Прошу вас, для меня это важно...


Ответы (1 шт):

Автор решения: Анастасия

Используйте облачное хранилище Firebase Storage (документация с официального сайта). Для этого Вам нужно будет начать работу с хранилищем через консоль Firebase и настроить правила доступа.

Чтобы загрузить файл в облачное хранилище, Вы сначала создаете ссылку на путь к хранилищу (нужно будет импортировать implementation 'com.google.firebase:firebase-storage').

StorageReference storageRef = storage.getReference();

Затем Вам нужно своё изображение преобразовать в байтовый массив. Если у Вас изображение в ImageView imageView, то это можно сделать так:

imageView.setDrawingCacheEnabled(true);
imageView.buildDrawingCache();
Bitmap bitmap = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] data = baos.toByteArray();

В итоге Вы получаете массив data, который можно записать в Firebase Storage.

UploadTask uploadTask = storageRef.Child("переменная с названием папки текущего пользователя").putBytes(data);
uploadTask.addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception exception) {
        // если произошла ошибка
    }
}).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
    @Override
    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
        // всё хорошо
 //данные можно получить из taskSnapshot.getMetadata() (метадата: размер файла, тип и т.д.)
    }
});

Готово - изображение загружено в хранилище в папку пользователя.

Дальше Вы можете читать свои файлы из хранилища. Несколько способов описаны тут (в зависимости от того, в каком формате Вы хотите получить результат).

→ Ссылка