React Native Firebase: как загрузить локальный файл изображения - PullRequest
0 голосов
/ 14 февраля 2020

Я уверен в загрузке изображений из компонентов средства выбора, однако я изо всех сил пытаюсь выяснить, как загружать stati c файлы в файлах проекта. В каталоге моего проекта есть изображение png, которое я хочу использовать в качестве изображения профиля по умолчанию для вновь созданных пользователей в моем приложении. После нажатия кнопки регистрации в firebase необходимо добавить новый файл с идентификатором пользователя в папке avatars / . Я конвертирую локальный файл в объект blob с помощью RNFetchBlob. Код, с которым я сейчас работаю, не выдает никаких ошибок, он просто не выполняется после строки Blob.build (...) .

Существует много устаревшей и нерелевантной информации, через которую мне трудно пробираться, поэтому я очень ценю любую помощь.

при нажатии кнопки регистрации:

handleSignUp = () => {

    // ... initialize user


    // I want to upload the image at '../../img/default_avatar.png' to firebase storage at 'avatars/<user_id>'
    const Blob = RNFetchBlob.polyfill.Blob;
    const fs = RNFetchBlob.fs;
    window.XMLHttpRequest = RNFetchBlob.polyfill.XMLHttpRequest;
    window.Blob = Blob;

    const imageFile = RNFetchBlob.wrap('../../img/default_avatar.png');

    const ref = firebase.storage().ref('avatars/' + user.uid);
    let uploadBlob = null;

    Blob.build(imageFile, { type: 'image/png' })
      .then((imageBlob) => {
          console.log(imageBlob)
          uploadBlob = imageBlob;
          ref.put(imageBlob, { contentType: 'image/png' });
      })
      .then(() => {
          uploadBlob.close();
          let url = ref.getDownloadURL();
          console.log("url: ", url)
      }).catch(() => {console.log("Firestore default image upload error!")});
}
...