Как загрузить изображение / файл, используя базу данных Firebase Realtime и React Native? - PullRequest
1 голос
/ 15 мая 2019

Я занимаюсь разработкой проекта React Native и для этого использую базу данных Firebase Real-time.

Я хочу сохранить страницу профиля пользователя. Для этого мне нужно загрузить изображение профиля пользователя в базу данных Firebase. Когда я просматриваю профиль пользователя, я должен видеть профиль пользователя с соответствующим изображением профиля пользователя. Я должен быть в состоянии обновить и удалить изображение профиля пользователя.

Использование GCS (Google Cloud Storage) для хранения изображения / файла и использование базы данных Firebase Realtime для хранения URL-адреса также хорошо для меня.

Мне просто нужно самое лучшее решение.

Я прошел через несколько похожих вопросов и все еще не понимал, как это сделать.

Не могли бы вы объяснить и рассказать, как это сделать в React Native?

1 Ответ

2 голосов
/ 16 мая 2019

Я хотел бы поделиться некоторым кодом в моем стороннем проекте, который реализовал функции, которые вы упомянули выше.Однако мне жаль, что полный доступ к исходному коду проекта недоступен.

Шаг 1. Загрузите файл изображения, пока пользователь отправляет изображение.

import firebase from 'react-native-firebase';

const upload = async (filepath: string, filename: string, filemime: string) => {
    const metaData = { contentType: filemime };
    const res = await firebase
        .storage()
        .ref(`gcs-folder-name-here/${filename}`)
        .putFile(filepath, metaData); // put image file to GCS
    return res;
};

Шаг 2. После вызоваupload функция, которую вы должны быть в состоянии извлечь URL-адрес изображения из ответа и сохранить его обратно в базу данных реального времени Firebase.

import firebase from 'react-native-firebase';

const userId = firebase.auth().currentUser.uid;
const res = await upload(`image.JPG`, `absolute/path/to/image.JPG`, `image/jpeg`); // function in step 1
const data = {
    name: 'User Name'
    photo: res.downloadURL, // retrieve image URL
};
firebase.database().ref('users/' + userId).set(data);

Надеюсь, это поможет.

...