رفع الملفات إلى واجهة برمجة خلفية
استخدم FormData وfetch لإرسال الملفات عبر POST وتتبع تقدم الرفع.
رفع الملفات إلى واجهة برمجة خلفية درس مجاني في React Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في React Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة React Academy 4 دروس في المجموع.
مرحبًا
واجهة FormData البرمجية
const formData = new FormData();
formData.append('file', selectedFile);
formData.append('description', 'Profile photo');الرفع باستخدام fetch
const response = await fetch('/api/upload', {
method: 'POST',
body: formData,
// Do not set Content-Type header here!
});إدارة حالة الرفع
const [uploading, setUploading] = useState(false);
const [progress, setProgress] = useState(0);
const [error, setError] = useState(null);تقدم الرفع باستخدام XMLHttpRequest
const xhr = new XMLHttpRequest();
xhr.upload.onprogress = (e) => {
if (e.lengthComputable) {
setProgress(Math.round((e.loaded / e.total) * 100));
}
};
xhr.open('POST', '/api/upload');
xhr.send(formData);تغليف XHR داخل Promise
function uploadFile(file) {
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.onload = () => resolve(xhr.response);
xhr.onerror = () => reject(new Error('Upload failed'));
xhr.upload.onprogress = (e) => setProgress(Math.round(e.loaded / e.total * 100));
xhr.open('POST', '/api/upload');
xhr.send(new FormData().set && (() => { const f = new FormData(); f.append('file', file); xhr.send(f); })());
});
}معالجة استجابة الخادم
const res = await fetch('/api/upload', { method: 'POST', body: fd });
if (!res.ok) throw new Error('Upload failed');
const { url } = await res.json();
setUploadedUrl(url);معالجة الأخطاء
try {
setUploading(true);
await uploadToServer(file);
} catch (err) {
setError(err.message);
} finally {
setUploading(false);
}إلغاء عملية رفع
const abortRef = useRef();
const start = async () => {
abortRef.current = new AbortController();
await fetch('/api/upload', { body: fd, signal: abortRef.current.signal });
};
const cancel = () => abortRef.current?.abort();رفع ملفات متعددة
تحقق سريع
مراجعة
اكتمل المقرر
الأسئلة الشائعة
هل درس «رفع الملفات إلى واجهة برمجة خلفية» مجاني؟
نعم — نص درس «رفع الملفات إلى واجهة برمجة خلفية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة React Academy، انتقل إلى CoddyKit PRO. تتضمن دورة React Academy 4 دروس في المجموع.
ماذا ستتعلم في «رفع الملفات إلى واجهة برمجة خلفية»؟
استخدم FormData وfetch لإرسال الملفات عبر POST وتتبع تقدم الرفع. تتمرن على React Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ React Academy؟
لا تُشترط خبرة سابقة. React Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «رفع الملفات إلى واجهة برمجة خلفية»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس React Academy هذا؟
نعم. كل درس في React Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- المدخلات غير المتحكَّم بها باستخدام useRef
- إدخال الملفات وقراءة بياناتها
- واجهة تحميل الملفات بالسحب والإفلات
- رفع الملفات إلى واجهة برمجة خلفية