Хранилище Firebase возвращает странные результаты для snapshot.bytesTransferred

Я пытаюсь рассчитать процент загрузки изображения в хранилище Firebase в React Native, однако snapshot.bytesTransferred, отправленный сервером Firebase, показывает ошибочные значения.

firebase.storage().
    ref().
    child('images').
    child('randomFileName').
    put(blob, {contentType: 'image/png'}).
    on('state_changed',
        progressCallback, // This is the upload progress callback
        (error) => {
          alert(error.message);
        },
        () => {
          successCallback(randomKey);
        });

Это функция progressCallback, она в основном устанавливает состояние, вычисляющее процент уже переданных байтов по сравнению с общим количеством байтов файла.

процентная формула был взят из официальной документации React:

(snapshot) => {
  let pct = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;

  console.debug('snapshot.totalBytes: ' + snapshot.totalBytes);
  console.debug('snapshot.bytesTransferred: ' + snapshot.bytesTransferred);
  console.debug('percentage: ' + pct);

  let state = this.state;
  state.pct = pct;
  this.setState(state);
}

Однако snapshot.bytesTransferred возвращает ошибочные результаты:

snapshot.totalBytes: 882722
snapshot.bytesTransferred: 0
percentage: 0

snapshot.totalBytes: 882722
snapshot.bytesTransferred: 010240
percentage: 1.1600481238713887

snapshot.totalBytes: 882722
snapshot.bytesTransferred: 0262144
percentage: 29.697231971107552

snapshot.totalBytes: 882722
snapshot.bytesTransferred: 262144
percentage: 29.697231971107552

snapshot.totalBytes: 882722
snapshot.bytesTransferred: 26214410240
percentage: 2969724.3571588793

snapshot.totalBytes: 882722
snapshot.bytesTransferred: 262144450560
percentage: 29697283.013225004

snapshot.totalBytes: 882722
snapshot.bytesTransferred: 786432
percentage: 89.09169591332265

snapshot.totalBytes: 882722
snapshot.bytesTransferred: 78643240960
percentage: 8909174.231524762

snapshot.totalBytes: 882722
snapshot.bytesTransferred: 882722
percentage: 100

Как вы можете видеть в примере кода, я не привожу возвращаемые значения к Int или чему-либо, что изменяет результаты, отправленные мне Firebase. Должен ли я делать что-то еще?

Подробности:

  • [email protected] (также пробовал 4.9.1, те же результаты).
  • image.png, который загружается, имеет размер 882722 байта (863 КБ).
  • Значение, возвращаемое из snapshot.totalBytes, равно 882722, что верно.

Вы решили это? У меня такая же проблема...

hugger 07.01.2020 05:07

@hugger Нет, извини. Я давно не работал с Firebase

Lucas Bustamante 07.01.2020 14:12
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
126
0

Другие вопросы по теме