Ошибка при сбое при загрузке файла с хранилищем firebase - PullRequest
0 голосов
/ 18 мая 2018

Я пытаюсь подготовиться к неизбежности, когда пользователь загружает данные в хранилище Firebase, но не имеет подключения к Интернету.В настоящее время, если я использую следующее и отключаю все интернет-соединения, он никогда не достигает catchError, он просто ждет и печатает dowloadUrl, когда соединение возвращается.

  FirebaseStorage.instance.setMaxOperationRetryTimeMillis(10);
  final StorageReference ref = FirebaseStorage.instance.ref().child("AllUsers").child(uuid).child(fileName);
  final StorageUploadTask uploadTask = ref.putFile(image, const StorageMetadata(contentLanguage: "en"));
  Uri downloadUrl;
  await uploadTask.future.then( (UploadTaskSnapshot snapshot) {
    downloadUrl = snapshot.downloadUrl;
    print(downloadUrl)
  }).catchError((error) {
    print(error);
  });

Означает ли это, что у меня нетбеспокоиться о кэшировании каждого изображения для последующей загрузки и о том, что оно обрабатывается?Я предполагаю, что нет, но это было бы здорово.

Обновление:

Добавление этого вместо catch затем:

  try {
    downloadUrl = (await uploadTask.future).downloadUrl;
    print("$downloadUrl");
  } catch (error) {
    print(error);
  }

не сделал вызов после запроса.

Обновление 2:

Попытка добавить следующее:

  FirebaseStorage.instance.setMaxUploadRetryTimeMillis(10);
  FirebaseStorage.instance.setMaxOperationRetryTimeMillis(10);
  FirebaseStorage.instance.setMaxDownloadRetryTimeMillis(10);

, который возвращает E/StorageException(13068): The operation retry limit has been exceeded., но через консоль и не распознается как ошибка в моем catchError илиtry catch блок.

1 Ответ

0 голосов
/ 19 мая 2018

(это не отвечает на точный вопрос)

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

user -> save local -> firebase -> delete local.

Вместо

user -> firebase -> (on success) -> done
                 -> (on failure) -> save local -> firebase
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...