Иногда дела идут не так, как планировалось, и возникает ошибка.
В случае сомнений проверьте возвращаемую ошибку и посмотрите, что говорится в сообщении об ошибке. В следующем коде показана реализация пользовательского обработчика ошибок, которая проверяет код ошибки и сообщение об ошибке, возвращаемое Cloud Storage . Такие обработчики ошибок можно добавлять к различным объектам, используемым в Cloud Storage API (например, UploadTask
и FileDownloadTask
).
Kotlin+KTX
internal inner class MyFailureListener : OnFailureListener { override fun onFailure(exception: Exception) { val errorCode = (exception as StorageException).errorCode val errorMessage = exception.message // test the errorCode and errorMessage, and handle accordingly } }
Java
class MyFailureListener implements OnFailureListener { @Override public void onFailure(@NonNull Exception exception) { int errorCode = ((StorageException) exception).getErrorCode(); String errorMessage = exception.getMessage(); // test the errorCode and errorMessage, and handle accordingly } }
Если вы прочитали сообщение об ошибке и у вас есть Cloud Storage Security Rules , которые разрешают ваши действия, но вы все еще не можете исправить ошибку, посетите нашу страницу поддержки и сообщите нам, как мы можем помочь.
Обработка сообщений об ошибках
Существует ряд причин, по которым могут возникнуть ошибки, включая отсутствие файла, отсутствие у пользователя разрешения на доступ к нужному файлу или отмену пользователем загрузки файла.
Чтобы правильно диагностировать проблему и устранить ошибку, вот полный список всех ошибок, которые выдает наш клиент, и причин их возникновения. Коды ошибок в этой таблице определены в классе StorageException
как целочисленные константы.
Код | Причина |
---|---|
ERROR_UNKNOWN | Произошла неизвестная ошибка. |
ERROR_OBJECT_NOT_FOUND | По нужной ссылке не существует объекта. |
ERROR_BUCKET_NOT_FOUND | Для Cloud Storage не настроен ни один сегмент. |
ERROR_PROJECT_NOT_FOUND | Ни один проект не настроен для Cloud Storage |
ERROR_QUOTA_EXCEEDED | Квота в вашем сегменте Cloud Storage превышена. Если у вас бесплатный уровень, перейдите на платный план. Если у вас платный план, обратитесь в службу поддержки Firebase. |
ERROR_NOT_AUTHENTICATED | Пользователь не авторизован, пожалуйста, авторизуйтесь и повторите попытку. |
ERROR_NOT_AUTHORIZED | Пользователь не имеет прав на выполнение желаемого действия. Проверьте свои правила, чтобы убедиться в их правильности. |
ERROR_RETRY_LIMIT_EXCEEDED | Превышено максимальное время выполнения операции (загрузка, скачивание, удаление и т. д.). Попробуйте еще раз. |
ERROR_INVALID_CHECKSUM | Файл на клиенте не соответствует контрольной сумме файла, полученного сервером. Попробуйте загрузить еще раз. |
ERROR_CANCELED | Пользователь отменил операцию. |
Кроме того, попытка вызвать getReferenceFromUrl()
с недопустимым URL-адресом приведет к созданию исключения IllegalArgumentException
. Аргумент вышеуказанного метода должен иметь форму gs://bucket/object
или https://firebasestorage.googleapis.com/v0/b/bucket/o/object?token=<TOKEN>