處理 Flutter 中的 Cloud Storage 錯誤

有時在建構應用程式時,事情可能會不如預期,並發生錯誤!

如有疑問,請擷取函式擲回的例外狀況,並查看錯誤訊息的內容。

final storageRef = FirebaseStorage.instance.ref().child("files/uid");
try {
  final listResult = await storageRef.listAll();
} on FirebaseException catch (e) {
  // Caught an exception from Firebase.
  print("Failed with error '${e.code}': ${e.message}");
}

處理錯誤訊息

發生錯誤的原因有很多,包括檔案不存在、使用者沒有存取所需檔案的權限,或是使用者取消檔案上傳作業。

為正確診斷問題並處理錯誤,以下列出客戶會發生的所有錯誤,以及發生錯誤的方式。

程式碼 說明
storage/unknown 發生不明錯誤。
storage/object-not-found 所需參照項目中沒有物件。
storage/bucket-not-found Cloud Storage 未設定任何值區
storage/project-not-found 沒有設定任何專案可使用 Cloud Storage
storage/quota-exceeded 您已超過 Cloud Storage 儲存桶的配額。如果您目前使用 Spark 定價方案,建議升級至即付即用的 Blaze 定價方案。如果你已採用 Blaze 定價方案,請與 Firebase 支援團隊聯絡。

重要事項:自 2025 年 10 月 1 日起,Blaze 定價方案將必須採用 Cloud Storage (包括預設值區)。
storage/unauthenticated 使用者未經過驗證,請驗證使用者身分,然後再試一次。
storage/unauthorized 使用者未經授權,無法執行所需動作,請檢查安全性規則,確保規則正確無誤。
storage/retry-limit-exceeded 作業 (上傳、下載、刪除等) 的時間上限已超過。請嘗試重新上傳。
storage/invalid-checksum 用戶端上的檔案與伺服器接收的檔案檢查碼不符。請重新上傳。
storage/canceled 使用者已取消作業。
storage/invalid-event-name 提供的事件名稱無效。必須是下列其中一個:runningprogresspause
storage/invalid-url 提供給 refFromURL() 的網址無效。格式必須為:gs://bucket/objecthttps://firebasestorage.googleapis.com/v0/b/bucket/o/object?token=<TOKEN>
storage/invalid-argument 傳遞至 put() 的引數必須是 FileBlobUInt8 陣列。傳遞至 putString() 的引數必須是原始、Base64Base64URL 字串。
storage/no-default-bucket 設定的 storageBucket 屬性中未設定值區。
storage/cannot-slice-blob 通常發生在本機檔案變更 (刪除、再次儲存等) 時。請確認檔案未變更後,再嘗試重新上傳。
storage/server-file-wrong-size 用戶端的檔案與伺服器收到的檔案大小不符。請嘗試重新上傳。