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