טיפול בשגיאות ב-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 הקובץ אצל הלקוח לא תואם לגודל הקובץ שהשרת קיבל. כדאי לנסות להעלות שוב.