معالجة الأخطاء في 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. إذا كنت مشتركًا في الفئة بدون تكلفة، عليك الترقية إلى خطة مدفوعة. إذا كنت مشتركًا في خطة مدفوعة، يُرجى التواصل مع فريق دعم Firebase.
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 الملف على العميل لا يتطابق مع حجم الملف الذي استلمه الخادم. يُرجى محاولة تحميل الفيديو مرة أخرى.