البرمجة

دليل تحميل الملفات باستخدام Express وNode.js

في محاولتك لرفع ملف وعرضه باستخدام Express وNode.js، يظهر خطأ من نوع TypeError('app.use() requires middleware functions');. هذا الخطأ يحدث عندما تقوم باستخدام app.use() بشكل غير صحيح، حيث يتوقع multer أن يتم تحديد المسار الذي سيتم فيه تخزين الملفات كوظيفة وسيطة (Middleware function)، ولكن يبدو أن هناك خطأ في تكوين multer.

لحل هذا الخطأ، يمكنك تغيير قطعة الكود المعنية في ملف fileupload.js كما يلي:

بدلاً من:

javascript
app.use(multer({ dest: '/tmp/'}));

يمكنك استخدام multer كدالة وسيطة بدون استخدام app.use():

javascript
var upload = multer({ dest: '/tmp/' });

ثم، قم بتحديد upload كوظيفة وسيطة في نقطة النهاية المختصة:

javascript
app.post('/file_upload', upload.single('file'), function (req, res) { // الكود الحالي لرفع الملفات });

وبهذا يمكنك حل مشكلتك وتجنب الخطأ الذي تواجهه. بالطبع، تأكد من أنك قد قمت بتثبيت حزمة multer باستخدام npm أولاً باستخدام:

bash
npm install multer

بعد إجراء هذه التعديلات، يجب أن يعمل التطبيق بشكل صحيح دون أي أخطاء.

المزيد من المعلومات

بالتأكيد، دعني أوسع شرحي حول الكود الخاص بك وأشرح بعض المفاهيم المرتبطة بتحميل الملفات باستخدام Express وNode.js.

أولاً وقبل كل شيء، يتيح لك الكود الذي قدمته إنشاء نموذج بسيط لتحميل الملفات. يستخدم مكتبة multer للتعامل مع عملية تحميل الملفات، والتي توفر وسائل للتحكم في كيفية تخزين ومعالجة الملفات المرفوعة.

الكود يشير إلى ملف HTML (fileupload.html) الذي يحتوي على نموذج يسمح للمستخدم بتحديد ملف وإرساله إلى الخادم. يشير النموذج إلى نقطة النهاية /file_upload باستخدام الطريقة POST.

ثم، في ملف fileupload.js، يتم تكوين خادم Express وتحديد مجلد مؤقت لتخزين الملفات المرفوعة باستخدام multer({ dest: '/tmp/' }). ثم يتم استخدام app.post للتعامل مع الطلبات POST إلى /file_upload.

تحدث مشكلتك الرئيسية من خلال محاولة استخدام multer كوسيط عبر app.use، ولكن يجب استخدامها كوظيفة معينة لنقطة النهاية المستهدفة.

بالنسبة للخطأ الذي واجهته “TypeError: ‘app.use()’ requires middleware functions”، فالتصحيح الذي قدمته يعالج هذا الخطأ بشكل صحيح.

إذا كنت تحتاج إلى مزيد من التوضيح حول أي جزء معين من الكود أو كنت بحاجة إلى مزيد من التفاصيل حول عملية تحميل الملفات باستخدام Express وNode.js، فأنا هنا للمساعدة.

زر الذهاب إلى الأعلى