Firebase Storage: ما هو، تحميل الملفات والتخزين السحابي

المؤلف: IT Sectr نُشر: 2026-04-28 وقت القراءة: 14 دق

Firebase Storage هو خدمة تخزين ملفات سحابية جزء من نظام Firebase من Google، مصممة لتحميل وتنزيل الصور والفيديو والصوت والبيانات الثنائية الأخرى من التطبيقات المحمولة والويب. على عكس القرص السحابي العادي، يتكامل Storage مع Firebase Authentication و Security Rules، مما يسمح بالتحكم المرن في الوصول إلى كل ملف على مستوى الطلب. وفقًا لـ Google Firebase (2026)، يعالج الخدمة أكثر من 500 مليون عملية ملف يوميًا، مما يوفر تخزينًا قابلًا للتوسع دون الحاجة إلى إدارة البنية التحتية للخادم.

النقاط الرئيسية

  • Firebase Storage — تخزين سحابي لملفات التطبيق متكامل مع منصة Firebase.
  • التحميل يتم مباشرة من العميل عبر SDK، متجاوزًا الخادم الخاص بك.
  • قواعد الأمان تسمح بالتحكم في الوصول إلى كل ملف بناءً على المصادقة والمحتوى.
  • المرونة تجاه انقطاعات الاتصال مضمونة من خلال الاستئناف التلقائي من نقطة الانقطاع.
  • التكامل مع Cloud Functions يسمح بمعالجة الملفات بعد التحميل.

ما هو Firebase Storage وكيف يعمل

Firebase Storage هو تخزين كائنات سحابي مبني على Google Cloud Storage ويوفر SDK لأنظمة Android و iOS والويب. يتم تخزين كل ملف ككائن في bucket من Google Cloud ويتم توجيهه عبر مسار يشبه نظام الملفات: gs://bucket-name/path/to/file.jpg. يمكن أن يصل حجم الملف الواحد إلى 5 تيرابايت، مما يسمح بتخزين أي بيانات وسائط دون ضغط مسبق.

تستخدم بنية Firebase Storage نموذج الروابط المرجعية (gsutil references) بدلاً من التسلسل الهرمي التقليدي للمجلدات، على الرغم من أن SDK يوفر واجهة بأدلة لراحة المطور. فيزيائيًا، يتم تخزين جميع الكائنات في مساحة الأسماء المسطحة للـ bucket، ويتم إنشاء المجلدات الافتراضية باستخدام بادئات المسار. يضمن هذا أداء بحث خطي بغض النظر عن عدد الملفات.

الميزة الرئيسية لـ Firebase Storage مقارنة بالاستخدام المباشر لـ Google Cloud Storage هي التكامل المدمج مع Firebase Authentication و Security Rules. لا يحتاج المطور إلى تكوين أدوار IAM منفصلة وحسابات خدمة: تُكتب قواعد الوصول بلغة تعريفية تشبه Firebase Realtime Database Rules ويتم تطبيقها تلقائيًا في كل طلب.

بنية bucket ومسارات الملفات

يتم إنشاء bucket Firebase Storage تلقائيًا عند تفعيل الخدمة في وحدة تحكم Firebase. يتبع مسار الملف النمط /اسم_المجلد/اسم_الملف ويمكن أن يحتوي على مستويات متداخلة. يُنصح بتنظيم المسارات وفقًا لمخطط /users/{userId}/images/{imageId}.jpg لعزل البيانات بين المستخدمين. هذا الهيكل يبسط كتابة قواعد الأمان حيث أن المسار يحتوي على معرف المالك.

من المهم فهم أن Firebase Storage ليس قاعدة بيانات علائقية أو خادم ملفات بالمعنى التقليدي. إنه تخزين كائنات مُحسَّن لعمليات قراءة وكتابة الملفات الكاملة. التحديث الجزئي للملف غير ممكن: إذا قمت بإعادة التحميل إلى نفس المسار، سيتم استبدال الكائن القديم بالجديد. لتخزين البيانات الهيكلية الصغيرة، استخدم Firebase Realtime Database أو Cloud Firestore.

أسعار وحدود Firebase Storage

تعتمد أسعار Firebase Storage على كمية البيانات المخزنة وعدد العمليات. تتضمن الخطة المجانية (Spark) 5 جيجابايت من التخزين و 20,000 عملية كتابة و 50,000 عملية قراءة يوميًا. الخطة المدفوعة (Blaze) تفرض رسومًا بناءً على الاستخدام الفعلي: 0.026 دولار لكل جيجابايت من البيانات المخزنة، و 0.05 دولار لكل 10,000 عملية كتابة، و 0.004 دولار لكل 10,000 عملية قراءة. يتم تطبيق رسوم إضافية على حركة المرور الصادرة.

بالنسبة لمعظم التطبيقات المحمولة التي لديها بضعة آلاف من المستخدمين، يكفي الحد المجاني خلال مرحلة النماذج الأولية والاختبار. عند التوسع إلى مئات الآلاف من المستخدمين، نادرًا ما تتجاوز تكاليف Storage 50–100 دولار شهريًا مع نهج محسّن للتحميل والتخزين المؤقت من جانب العميل.

كيفية تحميل الملفات إلى Firebase Storage

تحميل ملف إلى Firebase Storage يتم من خلال طريقة SDK المناسبة، والتي تقبل مسار التخزين وبيانات الملف (مصفوفة بايت، URI، تدفق أو Bitmap). يدير SDK تلقائيًا الاتصال، ويجزئ الملف إلى أجزاء للأحجام الكبيرة، ويوفر استدعاءات لتتبع التقدم. يتم التحميل مباشرة من جهاز العميل إلى Google Cloud، متجاوزًا الخادم الخاص بك، مما يقلل الحمل على البنية التحتية الخاصة بك.

لنظام Android، يستخدم SDK Firebase Storage الفئات StorageReference و UploadTask. يتم إنشاء StorageReference من المسار الجذر عبر Firebase.storage.reference وتشير إلى ملف معين في الـ bucket. يعيد UploadTask مستمعين للتقدم والإيقاف المؤقت والاكتمال. عند انقطاع الاتصال، يستأنف UploadTask التحميل تلقائيًا من آخر بايت تم إرساله بنجاح — هذا السلوك يسمى التحميل القابل للاستئناف.

يتم تمرير بيانات تعريف الملف (Content-Type، الحقول المخصصة) ككائن SettableMetadata منفصل عند بدء التحميل. يعد تعيين Content-Type بشكل صحيح أمرًا بالغ الأهمية لعرض الملفات بشكل صحيح في المتصفح وتخزين CDN المؤقت. يدعم Firebase Storage جميع أنواع MIME القياسية: image/jpeg و image/png و video/mp4 و application/pdf وغيرها.

إدارة البيانات الوصفية أثناء التحميل

تحتوي البيانات الوصفية للملف على حقول النظام (Content-Type، Cache-Control، Content-Disposition) وأزواج مفتاح-قيمة مخصصة (customMetadata). تتحكم حقول النظام في رؤوس HTTP أثناء التنزيل. على سبيل المثال، Cache-Control: public, max-age=31536000 يفعل التخزين المؤقت للاستجابة لمدة عام، مما يقلل بشكل كبير من عمليات التنزيل المتكررة لنفس الملف ويوفر حركة المرور.

البيانات الوصفية المخصصة مناسبة لنقل معلومات إضافية حول ملف دون إنشاء مجموعة منفصلة في Firestore. على سبيل المثال، يمكن لحقل uploadedBy تخزين userId للمستخدم الذي قام بالتحميل، مما يبسط تنفيذ المعارض بالمحتوى الذي ينشئه المستخدم. البيانات الوصفية المخصصة ليست محمية بشكل منفصل بواسطة Security Rules — يتم تنظيم الوصول إليها بواسطة نفس القواعد التي تنطبق على الملف نفسه.

التحميل المتعدد والمعالجة المجمعة

عند الحاجة إلى تحميل ملفات متعددة في وقت واحد (مثل الصور من معرض)، لا يُنصح بتشغيل UploadTasks مستقلة بالتوازي دون حدود. على الأجهزة المحمولة، يؤدي التحميل المتوازي لأكثر من 3–5 ملفات إلى زيادة تحميل مكدس الشبكة وحدوث مهلات. الاستراتيجية المثلى هي استخدام حد التزامن 3 أو التحميل التسلسلي مع شريط تقدم مشترك.

لـ المعالجة من جانب الخادم بعد التحميل (إنشاء الصور المصغرة، الضغط، مراجعة المحتوى)، استخدم مشغل Firebase Cloud Functions: functions.storage.object().onFinalize(). يتم استدعاء هذه الوظيفة تلقائيًا بعد اكتمال كل تحميل ملف ويمكنها حفظ نسخة معالجة في مسار مختلف. مزيد من التفاصيل في قسم حالات الاستخدام النموذجية.

تنزيل الملفات وإدارة الروابط

Firebase Storage يدعم طريقتين للتنزيل: التنزيل المباشر عبر SDK (الحصول على مصفوفة بايت أو ملف محلي) والحصول على رابط تنزيل مباشر للوصول عبر HTTP. يمكن استخدام الرابط المباشر لعرض الصور في ImageView، في WebView، أو لتوفير رابط للمستخدم. يتم إنشاء رابط التنزيل مع رمز أمان يمكن إبطاله في وحدة تحكم Firebase.

ترجع طريقة storageReference.downloadUrl رابطًا بالتنسيق https://firebasestorage.googleapis.com/v0/b/{bucket}/o/{path}?alt=media&token={token}. يتم تضمين رمز الأمان تلقائيًا في الرابط أثناء الإنشاء، لذلك يمكن مشاركة الرابط مع أطراف ثالثة (مثل تطبيق مراسلة) دون خطر الوصول غير المصرح به. ومع ذلك، إذا تم اختراق الرمز، يمكن إبطاله من خلال وحدة تحكم Firebase في قسم Storage — بعد ذلك، ستتوقف جميع الروابط بهذا الرمز عن العمل.

لـ التخزين المؤقت للملفات التي تم تنزيلها على العميل، استخدم التخزين المحلي مع آلية ETag أو تجزئة MD5. يعيد Firebase Storage رأس HTTP ETag عند طلب ملف، والذي يمكن مقارنته بقيمة مخزنة محليًا لتجنب إعادة تنزيل الملفات غير المتغيرة. هذا مفيد بشكل خاص لمحتوى الوسائط: الصور الرمزية وصور الغلاف والمعاينات — ملفات نادرًا ما يتم تحديثها ولكن يتم طلبها بشكل متكرر.

روابط التنزيل المباشرة وأمانها

رابط التنزيل مع رمز هو الطريقة الأساسية لتوفير الوصول إلى الملفات للمستخدمين غير المصادق عليهم (مثل عرض صورة في خلاصة الأخبار). يتم إنشاء الرمز مرة واحدة ولا يتغير حتى يتم إبطاله، لذلك يمكن تخزين الرابط في قاعدة بيانات (مثل بجانب حقل avatarUrl في Firestore). عند تغيير الصورة الرمزية، يتم حذف الملف القديم وإنشاء رابط جديد وحفظه.

من المهم تذكر: وجود رابط تنزيل لا يلغي Security Rules. إذا كانت القاعدة تمنع قراءة الملف، فستعيد طريقة downloadUrl خطأ رفض الإذن. هذا يعني أنه حتى معرفة المسار الصحيح للملف، لا يمكن للعميل غير المصادق عليه الحصول على الرابط. بعد الحصول عليه، يوفر الرابط وصول HTTP متجاوزًا Security Rules — لذلك فإن الرمز هو الحماية الوحيدة لرابط التنزيل.

التخزين المؤقت والعمل مع ETag

HTTP ETag هو معرف إصدار للملف يتغير كلما تم تعديل المحتوى. يعيد Firebase Storage تلقائيًا ETag في استجابة GET. يمكن لتطبيق العميل تخزين ETag في ذاكرة تخزين مؤقتة محلية وإرسال رأس If-None-Match: {etag} في الطلبات اللاحقة. إذا لم يتغير الملف، يعيد الخادم حالة 304 غير معدّل دون نقل البيانات.

لتنفيذ التخزين المؤقت الذكي في تطبيق محمول، استخدم مزيجًا من نظام الملفات المحلي وقاعدة بيانات (مثل Room لتخزين أزواج المسار-ETag). عند تحميل ملف، تحقق من ETag من قاعدة البيانات: إذا تطابق مع قيمة الخادم، استخدم النسخة المحلية. يقلل هذا النهج من حركة المرور بنسبة 60–80% للملفات الوسائطية الثابتة ويسرع تحميل الشاشات التي تحتوي على معارض.

قواعد الأمان لـ Firebase Storage

Security Rules هي لغة تعريفية للتحكم في الوصول إلى الملفات في Firebase Storage، تُنفذ على جانب خادم Firebase. كل قاعدة مرتبطة بمسار في الـ bucket وتحدد الشروط التي يُسمح بموجبها بعملية القراءة أو الكتابة. يتم التحقق من القواعد قبل كل طلب ولا يمكن تجاوزها بواسطة كود العميل. هذا هو خط الدفاع الوحيد للبيانات ضد الوصول غير المصرح به.

القاعدة الأساسية هي الوصول فقط للمستخدمين المصادق عليهم: allow read, write: if request.auth != null. تضمن هذه القاعدة أن المستخدمين المسجلين فقط يمكنهم قراءة وكتابة الملفات. لتكوين أكثر دقة، يُستخدم المتغير request.auth.uid الذي يحتوي على معرف المستخدم الحالي. بمقارنة uid بجزء من مسار الملف، يمكن إنشاء تخزين معزول لكل مستخدم.

مهم: Security Rules ليست آلية للتحقق من صحة المحتوى. إذا كنت بحاجة إلى التحقق من نوع الملف أو حجمه أو وجود كود ضار، استخدم قاعدة request.resource التي تحتوي على بيانات تعريف الملف الذي تم تحميله. الخصائص المتاحة هي request.resource.size (حجم الملف) و request.resource.contentType (نوع MIME) و request.resource.md5Hash (المجموع الاختباري). ومع ذلك، يتم إجراء التحقق الكامل من المحتوى من جانب الخادم عبر Cloud Functions.

السيناريوقاعدة Security Rules
المصادق عليهم فقطallow read, write: if request.auth != null
المالك فقطallow write: if request.auth.uid == userId
قراءة عامةallow read: if true; allow write: if request.auth != null
حد الحجمallow write: if request.resource.size < 5 * 1024 * 1024
حد النوعallow write: if request.resource.contentType.startsWith('image/')

مثال على قواعد المحتوى الذي ينشئه المستخدم

تكوين نموذجي لتطبيق مع صور رمزية للمستخدم ومعرض يبدو كالتالي. يمكن للمستخدم الكتابة فقط في دليله الخاص /users/{userId}/، ولكن يمكنه قراءة أي ملف في هذا الدليل (معرض عام). حجم الملف محدود بـ 5 ميجابايت، والنوع مقتصر على الصور فقط. تغطي هذه المجموعة من القواعد 80% من حالات استخدام Firebase Storage في التطبيقات الاجتماعية وتطبيقات المحتوى الذي ينشئه المستخدم.

نصيحة أمنية: لا تستخدم أبدًا قاعدة allow read, write: if true للـ bucket بأكمله. هذا يفتح الوصول للكتابة لأي شخص يعرف projectId الخاص بك. في عام 2025، زادت الهجمات على buckets Firebase غير المحمية، حيث استخدم المهاجمون الوصول المفتوح لتخزين محتوى غير قانوني. ابدأ دائمًا بالحد الأدنى من الأذونات الضرورية وقم بتوسيعها فقط عند الحاجة الصريحة.

التحقق من المحتوى عبر Cloud Functions

يسمح مشغل Cloud Functions functions.storage.object().onFinalize() بإجراء التحقق من المحتوى بعد التحميل. إذا لم يجتز الملف التحقق (مثل احتوائه على فيروس أو انتهاكه لقواعد المنصة)، يمكن للدالة حذفه وإخطار المستخدم. هذه هي الطريقة الوحيدة للتحقق من المحتوى الفعلي، حيث أن Security Rules ترى فقط البيانات الوصفية (الحجم ونوع MIME)، وليس البيانات الثنائية.

مثال على التحقق: دالة Node.js تقوم بتنزيل الملف الذي تم تحميله إلى دليل مؤقت، وتفحصه من خلال كاشف فيروسات (مثل ClamAV)، وإذا تم العثور على تهديد — تحذف الملف وتسجل الحدث في Firebase Crashlytics. وقت تنفيذ الدالة محدود بـ 540 ثانية، وهو كافٍ لفحص الملفات حتى 50 ميجابايت.

أمثلة كود لـ Firebase Storage بلغة Kotlin

دعنا نلقي نظرة على أمثلة عملية لتكامل Firebase Storage في تطبيق Android باستخدام Kotlin. يستخدم الكود فئات SDK القياسية لـ Firebase ويوضح تحميل صورة من معرض الجهاز، وتنزيل ملف مع تتبع التقدم، والحصول على رابط التنزيل. جميع الأمثلة تتضمن معالجة الأخطاء وتعليق المهام عند فقدان الاتصال.

قبل استخدام الكود، تأكد من أن ملف build.gradle يتضمن التبعية implementation(platform("com.google.firebase:firebase-bom:33.0.0")) و implementation("com.google.firebase:firebase-storage"). يختار Firebase BOM تلقائيًا الإصدارات المتوافقة من جميع SDKs، مما يلغي تعارضات الإصدارات.

تحميل صورة من المعرض

المثال الأول يوضح تحميل ملف يختاره المستخدم عبر Intent ACTION_GET_CONTENT. يتم تمرير URI للملف الذي تم الحصول عليه إلى SDK Firebase Storage، الذي يقرأ البيانات من هذا URI. تقبل طريقة putFile URI وتعيد UploadTask — كائن يمكن من خلاله تتبع التقدم وإيقاف التحميل مؤقتًا واستئنافه.

kotlin
val storageRef = Firebase.storage.reference
val imageRef = storageRef.child(
    "users/${auth.uid}/profile.jpg"
)

val metadata = SettableMetadata().apply {
    contentType = "image/jpeg"
    customMetadata = mapOf(
        "uploadedBy" to auth.uid!!
    )
}

imageRef.putFile(imageUri, metadata)
    .addOnSuccessListener {
        Log.d("Storage", "تم تحميل الملف")
    }
    .addOnFailureListener { e ->
        Log.e("Storage", "خطأ: ${e.message}")
    }

في المثال أعلاه، المتغير storageRef هو المرجع الجذر لـ bucket المشروع. تقبل طريقة child سلسلة مسار وتعيد StorageReference تشير إلى ملف معين. إذا كان الملف موجودًا بالفعل في المسار المحدد، فسيتم استبداله. يتم تمرير contentType و customMetadata عبر كائن SettableMetadata المرفق بطلب putFile.

تنزيل ملف مع تتبع التقدم

المثال الثاني يوضح تنزيل ملف عن طريق الحصول على مصفوفة بايت لعرضها في ImageView. تقوم طريقة getBytes(maxSize) بتحميل الملف بأكمله في الذاكرة. للملفات الأكبر من 10 ميجابايت، استخدم getFile(localUri) — يحفظ المحتوى مباشرة في ملف محلي دون تخزينه في RAM، مما يمنع OutOfMemoryError.

kotlin
val islandRef = storageRef.child("images/island.jpg")

val ONE_MEGABYTE: Long = 1024 * 1024
islandRef.getBytes(ONE_MEGABYTE)
    .addOnSuccessListener { bytes ->
        imageView.setImageBitmap(
            BitmapFactory.decodeByteArray(
                bytes, 0, bytes.size
            )
        )
    }
    .addOnFailureListener { e ->
        Log.e("Storage", "فشل التحميل: ${e.message}")
    }

لـ الحصول على رابط تنزيل (مثل حفظ الرابط في Firestore)، استخدم طريقة downloadUrl:

kotlin
islandRef.downloadUrl.addOnSuccessListener { uri ->
    Log.d("Storage", "رابط التنزيل: $uri")
    // حفظ uri.toString() في Firestore
}

نصيحة: يتم إنشاء رابط التنزيل مرة واحدة ويبقى ثابتًا حتى يتم إبطاله. احفظه في قاعدة البيانات عند التحميل الأول بدلاً من طلبه في كل مرة تعرض فيها الملف. هذا يقلل من عدد الطلبات إلى Firebase Storage ويحسن أداء واجهة المستخدم.

حالات الاستخدام النموذجية لـ Firebase Storage

Firebase Storage يُستخدم في التطبيقات المحمولة لتخزين أي ملفات مستخدم ونظام. تشمل السيناريوهات الأكثر شيوعًا الصور الرمزية وصور الملف الشخصي، وصور خلاصات المحتوى، وملفات الفيديو والصوت، والمستندات (PDF, DOCX) للمشاركة بين المستخدمين، والنسخ الاحتياطي للبيانات على نطاق صغير. في كل هذه الحالات، يعمل Storage كتخزين ملفات متخصص مع Firestore لتخزين البيانات الوصفية والروابط.

التطبيقات الاجتماعية هي حالة الاستخدام الأكثر شيوعًا. يقوم كل مستخدم بتحميل صورة رمزية وصور منشورات وملفات وسائط. هيكل المسارات /users/{uid}/posts/{postId}/image.jpg يعزل البيانات ويبسط Security Rules. عند حذف مستخدم، يمكن لـ Cloud Function اجتياز جميع أدلة المستخدم وتنظيف التخزين. وفقًا لمدونة Firebase (2025)، يُستخدم هذا النمط في 70% من مشاريع Firebase الإنتاجية.

تطبيقات التجارة الإلكترونية تستخدم Firebase Storage لتخزين صور المنتجات والكتالوجات وملفات PDF مع التعليمات. في هذه الحالة، عادة ما يكون الوصول إلى الملفات عامًا (قراءة بدون مصادقة)، بينما تقتصر الكتابة على المسؤولين عبر Cloud Functions مع التحقق من الأذونات. يتم تخزين روابط تنزيل المنتجات في Firestore بجانب بيانات المنتج الأخرى، مما يسمح بعرض الصور دون طلبات إضافية إلى Storage.

تطبيقات المراسلة والدردشة تخزن الصور والرسائل الصوتية المرسلة في المحادثات في Firebase Storage. يتم تنظيم المسار كـ /chats/{chatId}/messages/{messageId}.jpg. وصول القراءة مقتصر على المشاركين في الدردشة، ويتم التحقق منه عبر Security Rules باستخدام بيانات Firestore. هذا هو أحد السيناريوهات القليلة حيث تقرأ القاعدة بيانات من خدمة Firebase أخرى: allow read: if firestore.exists(/databases/(default)/documents/chats/{chatId}/members/{request.auth.uid}).

الأسئلة الشائعة

ما الفرق بين Firebase Storage و Google Cloud Storage؟

Firebase Storage هو طبقة علوية فوق Google Cloud Storage مع تكامل Firebase Authentication و Security Rules. لا يحتاج المطور إلى تكوين أدوار IAM وحسابات خدمة. يوفر Google Cloud Storage إمكانيات أوسع (إشعارات Pub/Sub، إدارة دورة حياة الكائن) ولكنه يتطلب إدارة يدوية للوصول عبر GCP IAM.

كيف يمكن تحديد حجم الملف الذي يتم تحميله؟

يتم تعيين حد الحجم في Security Rules عبر request.resource.size. مثال: allow write: if request.resource.size <= 5 * 1024 * 1024 يحدد الملفات بـ 5 ميجابايت. بالإضافة إلى ذلك، يمكن التحقق من جانب العميل قبل الإرسال لتجنب إهدار حركة مرور المستخدم على ملفات غير صالحة بشكل واضح.

هل يمكن حذف ملف باستخدام SDK Firebase Storage؟

نعم، يتم الحذف باستخدام طريقة delete() لكائن StorageReference: storageRef.child("path").delete(). عملية الحذف لا رجعة فيها وتزيل الملف من الـ bucket فورًا. لا يمكن حذف الملف إلا إذا كانت Security Rules تسمح بالكتابة للمسار المحدد. بعد الحذف، يتوقف رابط التنزيل عن العمل.

كيف أجعل التخزين للقراءة فقط؟

في Security Rules، اسمح بالقراءة للجميع (أو للمستخدمين المصادق عليهم) وامنع الكتابة: allow read: if request.auth != null; allow write: if false. الكتابة في هذا الوضع ممكنة فقط من خلال حساب خدمة Firebase Admin SDK — على سبيل المثال، من Cloud Functions بصلاحيات إدارية. هذا هو النمط القياسي لكتالوجات المنتجات والمحتوى العام.

كيف يتعامل Firebase Storage مع انقطاعات الاتصال أثناء التحميل؟

UploadTask يستخدم بروتوكول التحميل القابل للاستئناف القائم على HTTP PUT مع التجزئة. عند انقطاع الاتصال، يستأنف التحميل من آخر بايت تم تأكيده بدلاً من البدء من جديد. لا يلزم تكوين إضافي لهذا السلوك — يقوم SDK بذلك تلقائيًا للملفات الأكبر من 1 ميجابايت.

الملخص

  • Firebase Storage هو تخزين كائنات سحابي مبني على Google Cloud Storage مع تكامل Firebase Authentication و Security Rules.
  • تحميل الملفات يتم مباشرة من العميل عبر SDK مع دعم التحميل القابل للاستئناف عند انقطاع الاتصال.
  • التنزيل ممكن عبر SDK (مصفوفة بايت أو ملف محلي) أو عبر روابط تنزيل مباشرة مع رمز أمان.
  • Security Rules هي آلية حماية البيانات الوحيدة، مما يسمح بالتحكم في الوصول حسب المسار والمصادقة والحجم ونوع الملف.
  • التخزين المؤقت عبر HTTP ETag يقلل حركة المرور بنسبة 60–80% للملفات الوسائطية الثابتة عند التنفيذ الصحيح على العميل.
  • مشغل onFinalize من Cloud Functions يتيح المعالجة اللاحقة للملفات: الضغط والمراجعة وإنشاء المعاينات.
  • السعر قابل للتنبؤ: الحد المجاني 5 جيجابايت يغطي النماذج الأولية، وخطة Blaze للدفع حسب الاستخدام تفرض رسومًا بناءً على الاستخدام الفعلي.

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا