處理 Android 中 Cloud Storage 的錯誤

有時會發生錯誤。

如有疑問,請查看傳回的錯誤,並查看錯誤訊息。下列程式碼顯示自訂錯誤處理器實作項目,可檢查 Cloud Storage 傳回的錯誤代碼和錯誤訊息。這類錯誤處理程序可新增至 Cloud Storage API 中使用的各種物件 (例如 UploadTaskFileDownloadTask)。

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 設定 bucket
ERROR_PROJECT_NOT_FOUND 沒有為 Cloud Storage 設定專案
ERROR_QUOTA_EXCEEDED 您已超過 Cloud Storage 儲存桶的配額。如果您目前使用 Spark 定價方案,建議升級至即付即用 Blaze 定價方案。如果您已採用 Blaze 定價方案,請與 Firebase 支援團隊聯絡。

重要事項:自 2025 年 10 月 1 日起,您必須採用 Blaze 定價方案,才能使用 Cloud Storage,包括預設儲存桶。
ERROR_NOT_AUTHENTICATED 使用者未經過驗證,請驗證使用者身分,然後再試一次。
ERROR_NOT_AUTHORIZED 使用者未經授權,無法執行要求的動作,請檢查規則是否正確。
ERROR_RETRY_LIMIT_EXCEEDED 作業 (上傳、下載、刪除等) 的時間上限已超過。請再試一次。
ERROR_INVALID_CHECKSUM 用戶端的檔案與伺服器收到的檔案總和檢查碼不符。請嘗試重新上傳。
ERROR_CANCELED 使用者已取消作業。

此外,如果嘗試以無效網址呼叫 getReferenceFromUrl(),系統會擲回 IllegalArgumentException。上述方法的引數必須採用 gs://bucket/objecthttps://firebasestorage.googleapis.com/v0/b/bucket/o/object?token=<TOKEN> 的格式