Иногда что-то идет не так, как планировалось, и возникает ошибка.
Если вы сомневаетесь, проверьте возвращенную ошибку и посмотрите, что говорится в сообщении об ошибке. Следующий код показывает реализацию пользовательского обработчика ошибок, который проверяет код ошибки и сообщение об ошибке, возвращаемые Cloud Storage . Такие обработчики ошибок можно добавлять к различным объектам, используемым в API Cloud Storage (например, UploadTask
и FileDownloadTask
).
Kotlin
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 . Если вы используете тарифный план Spark, рассмотрите возможность обновления до тарифного плана Blaze с оплатой по мере использования . Если вы уже используете тарифный план Blaze, обратитесь в службу поддержки 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>