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