Иногда что-то идет не по плану и возникает ошибка.
Если вы сомневаетесь, проверьте возвращенную ошибку и посмотрите, что говорится в сообщении об ошибке. В следующем коде показана реализация пользовательского обработчика ошибок, который проверяет код ошибки и сообщение об ошибке, возвращаемое 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 } }
Если вы проверили сообщение об ошибке и у вас есть правила безопасности облачного хранилища, которые разрешают ваши действия, но все еще не можете исправить ошибку, посетите нашу страницу поддержки и сообщите нам, как мы можем помочь.
Обработка сообщений об ошибках
Существует ряд причин, по которым могут возникнуть ошибки, в том числе отсутствие файла, отсутствие у пользователя разрешения на доступ к нужному файлу или отмена загрузки файла пользователем.
Чтобы правильно диагностировать проблему и устранить ошибку, вот полный список всех ошибок, которые может вызвать наш клиент, и как они могут возникнуть. Коды ошибок в этой таблице определены в классе StorageException
как целочисленные константы.
Код | Причина |
---|---|
ERROR_UNKNOWN | Произошла неизвестная ошибка. |
ERROR_OBJECT_NOT_FOUND | По желаемой ссылке объект не существует. |
ERROR_BUCKET_NOT_FOUND | Корзина не настроена для облачного хранилища. |
ERROR_PROJECT_NOT_FOUND | Ни один проект не настроен для облачного хранилища |
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>