تخطَّ إلى المحتوى

تنزيل ZIP جماعي

import { Image } from ‘astro:assets’; import downloadAll from ’../../../../assets/screenshots/download-all-zip.png’;

قم بتنزيل جميع الملفات المرفقة بالسجل كأرشيف ZIP واحد. يظهر رابط Download All Files في أعلى المكوّن متى وجد ملف واحد على الأقل.

مكوّن الملفات أثناء تنفيذ Download All مع ظهور مؤشر التقدم

يختار Smarter Files الاستراتيجية المناسبة بناءً على الحجم الإجمالي للملفات:

  • الدفعات الصغيرة (افتراضياً: أقل من ~50 ميغابايت إجمالاً) تُضغط من جانب العميل في المتصفح باستخدام JSZip. يُنشأ ملف ZIP ويُنزَّل بالكامل على جهاز المستخدم — دون أي معالجة من جانب الخادم.
  • الدفعات الكبيرة تُضغط من جانب الخادم عبر بث الملفات من خلال servlet ملفات Salesforce. يتجاوز هذا حد Apex heap القياسي البالغ 12 ميغابايت، لذا لا يوجد حد عملي لحجم الأرشيف.

يرى المستخدم زر “Download All” واحداً بغض النظر عن المسار المتخذ؛ يقرر المكوّن تلقائياً.

تُضمَّن في ملف ZIP الملفاتُ التي يُسمح للمستخدم برؤيتها فقط. الملفات المقيّدة بسبب:

  • قواعد فئات الرؤية (دور المستخدم غير مدرج في القائمة المسموحة)، أو
  • علامة الخصوصية (علّمها مستخدم آخر، والمستخدم الحالي يفتقر إلى صلاحية View Private Documents)

…تُصفَّى من جانب الخادم قبل بناء الحزمة — لا تظهر في الأرشيف حتى لو كان المستخدم يعلم بوجودها.

إذا فشل تنزيل ملف فردي (تالف، محذوف بين جلب البيانات وإنشاء الضغط، أُلغيت الصلاحية في منتصف العملية)، يُنشأ ملف ZIP بالملفات المتبقية وتُعرض رسالة تنبيه تُعلم المستخدم بالملفات التي تم تخطيها. لا تتوقف عملية Download All بالكامل بسبب ملف واحد معطوب.

  • يعمل إنشاء ملف ZIP بشكل غير متزامن — يمكن للمستخدم التنقل بعيداً وسيكتمل التنزيل حين يصبح جاهزاً.
  • بالنسبة للسجلات التي تحتوي على مئات الملفات، توقع وقت انتظار ملحوظ عند النقر الأول؛ التنزيلات اللاحقة للسجل نفسه تكون أسرع لأن بيانات الملفات الوصفية تُخزَّن مؤقتاً.