Как загрузить альбом в хранилище firebase? - PullRequest
2 голосов
/ 04 августа 2020

ВВЕДЕНИЕ

Здравствуйте, до сегодняшнего дня я загружал одно изображение в хранилище с индикатором выполнения, что-то, что работает нормально.

Теперь мне нужно загрузить альбомы с несколькими изображениями. Я думал, что это будет что-то похожее, но повторяю ... Я делаю следующее:

1. Create a blob for each image in the albun
2. Upload them one by one to the storage.

ПРОБЛЕМА

Проблема в том, что если я загружу их один за другим, будет создано несколько задач uploadTasks. , а мне нужен только один индикатор выполнения. Есть ли способ загрузить сразу несколько изображений?

Код

const { images, description, location, tags } = postInfo; // images is an array of images' uris

// TODO - Build the blobs (for each image in images)

// TODO - Post UUID = Firt Blob UUID

// Create a storage referece
const storageRef = firebase.getStorage().ref("photos").child(postId);

// TODO - Upload all blobs to storage
// const uploadTask = storageRef.put(blob); <----------- Not only a blob, just all the album

uploadTask.on("state_changed", (taskSnapshot) => { // How to get a unique uploadTask for all blobs??
  // Update progress bar
  const percent =
    (taskSnapshot.bytesTransferred / taskSnapshot.totalBytes) * 100;

  setUploadProgress(percent);
});

1 Ответ

3 голосов
/ 04 августа 2020

Похоже, вам нужно будет запустить несколько функций asyn c одновременно. Попробуйте этот поток

  1. Создайте несколько асинхронных c функций (обещаний), которые загружают фотографии одновременно.
  2. Слушайте эти загрузки и суммируйте bytesTransferred и totalBytes каждые 0,1 секунды / каждый раз, когда он изменяется.
  3. Разделите указанные байты Переданные на totalBytes и вуаля, ваш прогресс загрузки в долях.

Спасибо за вопрос. Было весело.

...