0Pricing
React Academy · درس

إدخال الملفات وقراءة بياناتها

تعامَلوا مع ، واقرؤوا بيانات الملف الوصفية، واستعرضوا الصور باستخدام FileReader

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

مرحبًا

في هذا الدرس ستتعامل مع حقول إدخال الملفات في React، وتقرأ البيانات الوصفية للملفات، وتعاين الصور المحددة، وتستخدم واجهة FileReader البرمجية لمعالجة محتويات الملفات.

عنصر إدخال الملفات

لا يمكن التحكم في عنصر `` من خلال خاصية value في React، فهو غير مُدار دائمًا. اقرأ الملف المحدد من `e.target.files[0]` داخل معالج onChange.
function FileInput() {
  const handleChange = (e) => {
    const file = e.target.files[0];
    console.log(file.name, file.size, file.type);
  };
  return <input type="file" onChange={handleChange} />;
}

خصائص كائن الملف

يوسّع كائن File الكائن Blob ويحتوي على: `name` (اسم الملف)، و`size` (عدد البايتات)، و`type` (نوع MIME مثل 'image/png')، و`lastModified` (الطابع الزمني). اقرأ هذه الخصائص قبل رفع الملف أو معالجته.

قبول أنواع محددة من الملفات

استخدم السمة `accept` لتلميح إلى المتصفح بأنواع الملفات التي ينبغي عرضها. ادمج بين أنواع MIME والامتدادات. واحرص دائمًا على التحقق من الصحة على الخادم أيضًا.
<input type="file" accept="image/png,image/jpeg,.pdf" />

تحديد ملفات متعددة

أضف السمة `multiple` للسماح بتحديد ملفات متعددة. وتُرجع `e.target.files` كائن FileList، لذا حوّله إلى مصفوفة باستخدام `Array.from()` للاستفادة من أساليب المصفوفات.
<input type="file" multiple />

const files = Array.from(e.target.files);

معاينة صورة باستخدام URL.createObjectURL

أنشئ عنوان URL مؤقتًا لمعاينة ملف صورة محدد باستخدام `URL.createObjectURL(file)`. وتذكّر إبطاله باستخدام `URL.revokeObjectURL` عند الانتهاء لتحرير الذاكرة.
const [preview, setPreview] = useState(null);

const handleChange = (e) => {
  const file = e.target.files[0];
  if (file) setPreview(URL.createObjectURL(file));
};

useEffect(() => {
  return () => { if (preview) URL.revokeObjectURL(preview); };
}, [preview]);

{preview && <img src={preview} alt="Preview" />}

قراءة محتويات الملفات باستخدام FileReader

استخدم واجهة `FileReader` البرمجية لقراءة محتويات الملف كنص أو كعنوان URL للبيانات. استدعِ `reader.readAsText(file)` للملفات النصية أو `reader.readAsDataURL(file)` للملفات الثنائية مثل الصور.
const reader = new FileReader();
reader.onload = (e) => setContent(e.target.result);
reader.readAsText(file);

التحقق من حجم الملف

تحقّق من حجم الملف على العميل قبل رفعه. ارفض الملفات التي تتجاوز حدًا معينًا، واعرض رسالة خطأ.
const MAX_SIZE = 5 * 1024 * 1024; // 5 MB
if (file.size > MAX_SIZE) {
  setError('File must be under 5 MB');
  return;
}

مسح حقل إدخال الملفات

لا يمكنك مسح حقل إدخال الملفات بتعيين قيمته، لأنها للقراءة فقط. بدلًا من ذلك، أعد ضبطه مباشرةً من خلال مرجع أو غيّر خاصية `key` لحقل الإدخال لإجبار React على إعادة تركيبه.
const inputRef = useRef();
const clear = () => { inputRef.current.value = ''; };
<input ref={inputRef} type="file" />

تخزين مراجع الملفات في الحالة

خزّن كائن File نفسه في الحالة، وليس الاسم أو عنوان URL فقط. يتيح لك ذلك رفع الملف لاحقًا دون إعادة قراءته من DOM.
const [file, setFile] = useState(null);
const handleChange = (e) => setFile(e.target.files[0] || null);

تحقّق سريعًا

ما الأسلوب الذي ينشئ عنوان URL مؤقتًا لمعاينة ملف صورة محدد في المتصفح؟

مراجعة

اقرأ الملفات المحددة من e.target.files. استخدم URL.createObjectURL للمعاينات، وFileReader لقراءة المحتويات، وتحقّق من الحجم على العميل، وخزّن كائن File في الحالة لرفعه لاحقًا.

التالي

الدرس التالي: **واجهة رفع الملفات بالسحب والإفلات** — ستبني منطقة للسحب والإفلات مع ملاحظات مرئية باستخدام أحداث React.

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

هل درس «إدخال الملفات وقراءة بياناتها» مجاني؟

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

ماذا ستتعلم في «إدخال الملفات وقراءة بياناتها»؟

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

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

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

كم من الوقت يستغرق درس «إدخال الملفات وقراءة بياناتها»؟

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

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

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

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

  1. المدخلات غير المتحكَّم بها باستخدام useRef
  2. إدخال الملفات وقراءة بياناتها
  3. واجهة تحميل الملفات بالسحب والإفلات
  4. رفع الملفات إلى واجهة برمجة خلفية
← العودة إلى React Academy