0Pricing
JavaScript Academy · درس

سحب الملفات إلى الصفحة

تعاملوا مع الملفات المُسقطة من سطح المكتب.

سحب الملفات إلى الصفحة درس مجاني في JavaScript Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في JavaScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة JavaScript Academy 4 دروس في المجموع.

الملفات من سطح المكتب

إلى جانب نقل العناصر، تتيح Drag and Drop API للمستخدمين سحب الملفات من نظام التشغيل إلى صفحتك — وهو الأساس لمناطق إفلات الرفع.

قبول إفلات الملفات

يشبه الإعداد إعداد إفلات العناصر: امنع السلوك الافتراضي في dragover وdrop. والفرق هو قراءة الملفات بدلًا من استخدام getData.

dropzone.addEventListener("dragover", (e) => e.preventDefault());

dataTransfer.files

عند الإفلات، تكون e.dataTransfer.files عبارة عن FileList من كائنات File المُفلتة.

dropzone.addEventListener("drop", (e) => {
  e.preventDefault();
  const files = e.dataTransfer.files;
  console.log(files.length, "file(s) dropped");
});

التكرار على الملفات

يشبه FileList المصفوفة. حوّله باستخدام معامل الانتشار لتتمكن من التكرار عليه باستخدام أساليب المصفوفات.

const files = [...e.dataTransfer.files];
files.forEach((file) => {
  console.log(file.name, file.size, file.type);
});

بيانات الملف الوصفية

يتيح كل كائن File الخصائص name وsize بالبايتات وtype بنوع MIME وlastModified دون قراءة محتواه.

console.log(file.name);          // "photo.png"
console.log(file.type);          // "image/png"
console.log(file.size);          // 20481

التصفية حسب النوع

تحقق من الملفات المُفلتة قبل معالجتها — اقبل الصور فقط، مثلًا.

const images = files.filter((f) => f.type.startsWith("image/"));
if (images.length === 0) console.log("No images dropped");

قراءة محتوى الملف

استخدم FileReader لقراءة ملف. استخدم readAsText للنصوص وreadAsDataURL للمعاينات.

const reader = new FileReader();
reader.onload = () => console.log(reader.result);
reader.readAsText(file);

معاينة الصور المُفلتة

يوفّر URL.createObjectURL(file) عنوان URL فوريًا للمعاينة دون قراءة الملف بالكامل. أبطله عند الانتهاء لتحرير الذاكرة.

const url = URL.createObjectURL(file);
img.src = url;
img.onload = () => URL.revokeObjectURL(url);

مقارنة items و files

يقدّم dataTransfer.items معلومات أغنى من files: إذ يوضّح كل DataTransferItem الخاصية kind، التي تكون إما "file" أو "string"، ويمكنه توفير إدخال ملف أو دليل.

for (const item of e.dataTransfer.items) {
  if (item.kind === "file") {
    const file = item.getAsFile();
    console.log(file.name);
  }
}

رفع الملفات المُفلتة

ضع الملفات في FormData وأرسلها إلى خادمك باستخدام POST.

const form = new FormData();
files.forEach((f) => form.append("files", f));
fetch("/upload", { method: "POST", body: form });

منع الانتقال غير المقصود

إذا أُفلت ملف خارج منطقتك، ينتقل المتصفح إليه. أضف حماية إلى المستند بأكمله لمنع ذلك.

window.addEventListener("dragover", (e) => e.preventDefault());
window.addEventListener("drop", (e) => e.preventDefault());

تحقق سريع

اختبر إفلات الملفات.

مراجعة: سحب الملفات إلى الصفحة

أنشأت منطقة لإفلات الملفات، وقرأت dataTransfer.files، وفحصت البيانات الوصفية، وصفّيت الملفات حسب النوع، وعاينت الصور باستخدام عناوين URL للكائنات، واستخدمت FileReader، ورفعت الملفات باستخدام FormData، ومنعت الانتقال غير المقصود. وبذلك يكتمل درس Drag and Drop.

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

هل درس «سحب الملفات إلى الصفحة» مجاني؟

نعم — نص درس «سحب الملفات إلى الصفحة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة JavaScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة JavaScript Academy 4 دروس في المجموع.

ماذا ستتعلم في «سحب الملفات إلى الصفحة»؟

تعاملوا مع الملفات المُسقطة من سطح المكتب. تتمرن على JavaScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ JavaScript Academy؟

لا تُشترط خبرة سابقة. JavaScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «سحب الملفات إلى الصفحة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس JavaScript Academy هذا؟

نعم. كل درس في JavaScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. جعل العناصر قابلة للسحب
  2. أهداف الإسقاط وdataTransfer
  3. التغذية المرئية الراجعة أثناء السحب
  4. سحب الملفات إلى الصفحة
← العودة إلى JavaScript Academy