معالجة الأخطاء في 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 for Firebase خطة Blaze المَرِنة للدفع حسب الاستخدام. إذا ظهر لك هذا الخطأ في مشروع ضمن خطة Spark، عليك الترقية إلى خطة Blaze المَرِنة لاستعادة إمكانية الوصول. لمزيد من التفاصيل، يمكنك مراجعة الأسئلة الشائعة.
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 Array. يجب أن تكون الوسيطة التي تم تمريرها إلى putString() سلسلة أولية أو Base64 أو Base64URL.
storage/no-default-bucket لم يتم ضبط أي حزمة في السمة storageBucket في الإعدادات.
storage/cannot-slice-blob يحدث هذا عادةً عندما يتم تغيير الملف المحلي (حذفه أو حفظه مرة أخرى أو غير ذلك). يُرجى محاولة التحميل مرة أخرى بعد التأكّد من عدم تغيير الملف.
storage/server-file-wrong-size لا يتطابق الملف على العميل مع حجم الملف الذي تلقّاه الخادم. يُرجى محاولة التحميل مرة أخرى.