טיפול בשגיאות ב-Cloud Storage ב-Flutter

לפעמים כשמפתחים אפליקציה, דברים לא מסתדרים כמו שתכננו ומתרחשת שגיאה.

אם יש ספק, כדאי לנסות ללכוד את החריגה שהפונקציה יוצרת ולבדוק מה כתוב בהודעת השגיאה.

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.

חשוב: החל מ-1 באוקטובר 2025, התוכנית Blaze נדרשת לשימוש ב-Cloud Storage, גם בדלי ברירת מחדל.
storage/unauthenticated המשתמש לא אומת. צריך לבצע אימות ולנסות שוב.
storage/unauthorized למשתמש אין הרשאה לבצע את הפעולה הרצויה. צריך לבדוק את כללי האבטחה כדי לוודא שהם נכונים.
storage/retry-limit-exceeded חריגה ממגבלת הזמן המקסימלית של פעולה (העלאה, הורדה, מחיקה וכו'). כדאי לנסות להעלות שוב.
storage/invalid-checksum הקובץ בלקוח לא תואם לסיכום הביקורת של הקובץ שהתקבל בשרת. כדאי לנסות להעלות שוב.
storage/canceled המשתמש ביטל את הפעולה.
storage/invalid-event-name צוין שם אירוע לא תקין. חייב להיות אחת מהאפשרויות הבאות: [running, progress, pause]
storage/invalid-url כתובת ה-URL שסופקה ל-refFromURL() לא תקינה. הערך צריך להיות בפורמט: gs://bucket/object או https://firebasestorage.googleapis.com/v0/b/bucket/o/object?token=<TOKEN>
storage/invalid-argument הארגומנט שמועבר אל put() חייב להיות מערך File,‏ Blob או UInt8. הארגומנט שמועבר אל putString() חייב להיות מחרוזת גולמית, Base64 או Base64URL.
storage/no-default-bucket לא הוגדרה קטגוריה במאפיין storageBucket של ההגדרות.
storage/cannot-slice-blob השגיאה הזו מתרחשת בדרך כלל כשהקובץ המקומי השתנה (נמחק, נשמר מחדש וכו'). אפשר לנסות להעלות שוב אחרי שמוודאים שהקובץ לא השתנה.
storage/server-file-wrong-size הקובץ בלקוח לא תואם לגודל הקובץ שהתקבל בשרת. כדאי לנסות להעלות שוב.