في الدرس السابق،
تعلمنا كيف يتم
دعم تحميل الملفات من خلال نهج البيانات متعدد الأنظمة الأساسية.
في هذا التمرين، سنستخدم وحدة Multer،
التي أشرنا إليها في المحاضرة لتمكين الخادم السريع لدينا
من دعم تحميل ملفات الصور إلى موقع الخادم الخاص بنا.
سيقومون بتخزين ملفات الصور هذه في مجلد العام/الصور.
ستكون هذه الصور مفيدة في تطبيقنا عندما نقوم بتوفير
صور للأطباق المختلفة أو الرادارات أو العروض الترويجية،
التي قمنا ببنائها في خادم REST API الخاص بنا.
للبدء في هذا التمرين،
فإن الخطوة الأولى بالطبع،
هي تثبيت وحدة Multer حتى في نوع موجه npm تثبيت
multer ناقص الحفظ وفي الوقت الحالي أستخدم multer 1.3.1 في هذه الدورة.
لذلك بمجرد تثبيت وحدة مولتر،
دعونا نذهب إلى مشروعنا ومن ثم تنفيذ مسار جديد يمكننا من تحميل الملفات.
انتقل إلى المشروع في مجلد المسارات،
دعونا إضافة ملف جديد باسم تحميل router.js.
هذا الموجه، الموجه السريع الذي سنقوم بتنفيذه هنا،
هو الموجه الذي سيدعم تحميل الملفات.
لذلك، في جهاز التوجيه تحميل اسمحوا لي أن مجرد الذهاب إلى
جهاز التوجيه طبق ونسخ هذه الأشياء القليلة الأولى من جهاز التوجيه طبق
لأننا إلى حد كبير الذهاب إلى إعداد
بنية مماثلة في التطبيق لدينا أو جهاز التوجيه تحميل.
لذلك، اسمحوا لي أن نسخ ذلك الجزء وبعد ذلك سوف نقوم بتحرير ذلك.
لذا، في جهاز التوجيه التحميل،
لا أحتاج إلى النمس لذا سأقوم بإزالة النمس ولا أحتاج إلى الأطباق أيضًا.
لذلك، سيتم إزالة هذين الاثنين وبعد ذلك
نحن بحاجة إلى التعبير عن محلل الجسم والمصادقة.
الآن، أنا ذاهب إلى طلب وحدة مولتر هنا.
مرة واحدة ونحن تشمل وحدة مولتر،
والآن هذا جهاز التوجيه أنا ذاهب إلى استدعاء هذا كما جهاز التوجيه تحميل.
لذلك، سوف أقول تحميل جهاز التوجيه استخدام محلل الجسم
ثم هذا واحد ولكن جهاز التوجيه تحميل ومرة أخرى،
تذكر أن أقول تصدير وحدة، تحميل جهاز التوجيه هنا.
لذلك، بالنسبة لمسار أجهزة توجيه التحميل،
نحتاج إلى إضافة طرق مختلفة.
سأفعل ذلك في وقت لاحق قليلا ولكن قبل ذلك دعونا إعداد
مولتر لتمكيننا من تحميل الملفات.
الآن، افتراضيا، مولتر يمكن الإعداد ببساطة عن طريق استخدام مولتر داخل التطبيق لدينا،
ولكن أنا ذاهب للقيام ببعض التكوين من مولتر في
هذا التمرين بحيث أننا ذاهبون
لتخصيص الطريقة مولتر يعالج تحميل الملفات.
لذلك، لاستخدام مولتر،
واحدة من الخيارات التي يأخذ مولتر هو للتخزين.
لذلك، يوفر مولتر وظيفة تخزين القرص هذه التي
تمكننا من تحديد محرك التخزين وهنا يمكننا تكوين بعض الأشياء.
الآن، إذا كانت مجرد مسألة تكوين الوجهة،
يمكنك ببساطة أن تقول dest colon،
ثم تحديد المجلد الوجهة الذي سيتم تخزين الملفات التي تم تحميلها.
ولكن هنا سأقوم ببعض التكوين الإضافي لوحدة مولتر هنا.
لذلك، هذا هو المكان الذي أنا ذاهب لاستخدام دعم تخزين القرص مولتر.
داخل تخزين القرص،
يمكنني تحديد اثنين من الخيارات هنا.
الخيارات التي سأقوم بتحديدها ستكون
الوجهة والثانية هي اسم الملف.
لذلك، اثنين من التكوينات التي أنا ذاهب لتوريد إلى تخزين القرص.
الوجهة كما تتوقع,
يسمح لي لتكوين الوجهة وهذا يأخذ
كتكوين هنا وظيفة هنا.
لذلك، يتم تكوين الوجهة كدالة هنا.
سوف تتلقى هذه الوظيفة الطلب وأيضا كائن يسمى الملف،
والذي يحتوي على معلومات حول الملف الذي
تمت معالجته بواسطة مولتر وأيضا وظيفة رد الاتصال.
لذا، cb هي وظيفة رد الاتصال.
لذا، هنا للوجهة،
سأقول cb null،
المعلمة الثانية هي المجلد الوجهة،
والتي يمكن التعبير عنها كسلسلة حيث سيتم تخزين الملفات.
لذا، هنا، سأقوم بتزويد الوجهة كصور شرطة مائلة عامة.
لأنه في هذا التمرين أنا ذاهب لدعم تحميل الصور.
لذلك، هذا هو الجزء الذي سأقوم بتحديده هنا، لذلك تحميل الصورة.
لذا، تأخذ وظيفة رد الاتصال كما ترى معلمتين.
الأول هو، بطبيعة الحال،
الخطأ الذي في هذه الحالة أنا ذاهب لتعيينه إلى
فارغة والثاني هو مجلد الوجهة،
حيث سيتم تخزين صوري.
لذلك، يمكنني تكوين ذلك عن طريق قول صور شرطة مائلة عامة.
لذلك، في مجلد الصور،
سيتم تخزين الملفات التي أقوم بتحميلها.
بالنسبة لاسم الملف أيضًا،
فإنه يحصل على المعلمات الثلاثة
ورسالة الطلب والملف ووظيفة رد الاتصال.
من تكوين الطريقة التي يتم بها استدعاء وظيفة رد الاتصال،
يمكننا تحديد معلومات حول اسم الملف.
لذلك، بالنسبة لوظيفة رد الاتصال أود أن أقول cb null وليس هناك خطأ هنا.
ثم يصر الثاني على اسم الملف،
الذي سيتم استخدامه للملف المحدد الذي تم تحميله للتو،
وكيف سيتم تخزينه.
لذلك، هذا الكائن الملف الذي حصلت عليه هنا،
ويدعم مجموعة من عدة خصائص على ذلك.
واحدة من الخصائص تسمى، الاسم الأصلي.
لذلك، الاسم الأصلي أساسا،
يعطينا الاسم الأصلي للملف من جانب العميل الذي تم تحميله.
أصر على أنه عند حفظ الملف على جانب الخادم،
سيتم إعطاء الملف نفس الاسم تمامًا
مثل الاسم الأصلي للملف الذي تم تحميله.
حتى أتمكن من معرفة أنني أقوم بتحميل
نفس الملف بالضبط وعلى جانب الخادم عند
تحميل الملف سيتم تخزينه بنفس الاسم.
الآن، إذا لم تقم بتكوين هذا،
فسيعطي multer افتراضيًا بعض السلسلة العشوائية
كاسم الملف بدون ملحقات.
لذلك، قد لا يكون ذلك شيئًا ستكون سعيدًا
باستخدامه في هذا التمرين بالذات.
لذلك، لهذا السبب أنا تكوين صراحة قائلا أنه
يجب تخزين الملف مع الاسم الأصلي للملف الذي تم تحميله.
سنواجه مرة أخرى كائن الملف هذا
بمزيد من التفصيل ونرى كيف
يمكننا الاستفادة من المعلومات من كائن الملف في وقت لاحق قليلا.
بالإضافة إلى ذلك، يمكنني أيضًا تحديد مرشح ملف هنا لتكوين multers.
سيمكنني مرشح الملفات من تحديد نوع الملفات التي
أرغب في تحميلها أو التي أنا على استعداد لقبول تحميلها.
لذلك، للقيام بذلك سوف أقوم بإعداد وظيفة أخرى تسمى
فلتر ملف صورة const
وهذا واحد سوف تحديد وظيفة في دقيقة واحدة.
الآن، لهذا، يمكنني أيضًا حفظ هذا
كتخزين const لأننا كنا نستخدم const لكل شيء،
لذلك، سأقول فقط تخزين const.
بالنسبة إلى مرشح ملف الصورة،
سأقول مرشح ملف صورة const.
مرة أخرى، فإنه يتلقى ثلاثة معلمات طلب
، كائن، كائن الملف الذي يحتوي على معلومات حول
الملف الذي تم تحميله وظيفة رد الاتصال هنا.
من خلال وظيفة رد الاتصال،
وسوف تمرير المعلومات مرة أخرى إلى بلدي التكوين مولتر التي
تمكني من تحديد كيف أنا ذاهب لتخزين هذه المعلومات.
لذا، ستكون هذه وظيفة سهم هنا.
داخل وظيفة السهم هذه ما سأتحقق منه هو أنه،
سأقول إذا لم يكن الملف مطابقة الاسم الأصلي.
لذلك، الاسم الأصلي هو سلسلة هنا.
لذلك، أحاول معرفة ما إذا كان هناك تطابق لتلك السلسلة بالقول،
داخل هنا تعبير عادي.
لذا، فإن التعبير العادي الذي سأحدده كشرطة مائلة،
نقطة مائلة عكسية، ثم
الخيارات التي سأقوم بتحديدها هي jpg
أو jpeg أو
png أو gif.
لذا، هذه هي الطريقة التي أحدد بها التعبير العادي هناك.
لنقول أنه حسنًا،
إذا كان امتداد الملف يحتوي على jpg أو jpeg أو png أو gif،
فسأعامل ذلك كملف صورة وسأكون على استعداد لقبول تلك الملفات.
إذن، هذا ما نقوم بإختباره هنا.
إذا كان هذا هو الحال،
وهذا هو إذا كان امتداد الملف لا يتطابق مع أي من هذه الأشياء، لذلك،
هذا هو السبب في أننا لا نرى ثم نقول، العودة cb.
ثم، لاحظ أن cb المعلمة الأولى ستكون خطأ.
لذلك، سأعود خطأ جديد
يقول أنه يمكنك تحميل ملفات الصور فقط.
لذلك، نحن نصر على أن الملفات الوحيدة التي سوف
يقبلونها هي ملفات الصور والمعلمة الثانية ستكون خاطئة.
نظرًا لأننا نوفر الخطأ كمعلمة أولى،
يتم تعيين المعلمة الثانية إلى false.
خلاف ذلك يقول cb null صحيح.
لذا، مما يعني أن الملف الذي يحاول
تحميله يطابق النمط وهكذا فهو ملف صورة،
ولذا فنحن على استعداد للسماح بتحميله.
اثنين من التكوينات التي نحن ذاهبون لتوريد أن وحدة مولتر.
كيف نقوم بتكوين وحدة مولتر للاستخدام داخل تطبيقنا؟
هذا هو المكان الذي سوف أعلن تحميل كونست
كما مولتر وبعد ذلك أود أن تحدد بين قوسين أن الخيارات هنا.
يمكنني تحديد التخزين كوظيفة التخزين التي قمت بتعريفها هنا للتو.
وظيفة التخزين هذه كمعلمة الأولى،
والمعلمة الثانية هي عامل تصفية ملف.
مرشح الملفات هو طريقة تمكني من تحديد
أي نوع من الملفات التي أنا على استعداد لقبول وبعد ذلك سأقول، تصفية ملف الصورة.
فقط قم بتبديل كلمة التفاف،
بحيث يمكنك رؤية السطر بأكمله هنا.
لذلك، فإنه يقول يمكنك تحميل ملفات الصور فقط ومن ثم للمولتر،
وأنا تكوين مرشح الصورة، وهذا كل شيء.
تم تكوين وحدة multer الخاصة بي الآن لتمكينني من تحميل ملفات الصور هنا.
ثم دعونا الآن المضي قدما وتكوين جهاز التوجيه التحميل.
بالنسبة إلى جهاز توجيه التحميل،
سأسمح فقط باستخدام طريقة المشاركة هنا.
وبالتالي فإن الحصول على، ووضع،
وحذف الطرق لن يسمح على نقطة نهاية جهاز التوجيه التحميل.
لمساعدتي في القيام بذلك،
سأذهب إلى جهاز توجيه الطبق ثم أذكر أنه كان لدينا وضع تكوين هنا بالفعل.
أنا ذاهب لنسخ ذلك ومن ثم تأتي
إلى جهاز التوجيه تحميل وبعد ذلك سوف لصق تلك المعلومات هنا.
سنقول، إذا كانت عملية الحصول على ثم أنا لن
تدعم أن على نقطة النهاية سيكون إيماجيوبلود.
لن يسمح بالحصول
، وبالمثل لن يسمح بوضع،
وكذلك لن يسمح بحذف.
أنا لن تدعم أي من هذه العمليات، لذلك ضع، حذف.
هؤلاء الثلاثة لن يسمح لهم
الطريقة الوحيدة التي سأقوم بدعمها هي طريقة المشاركة.
بالنسبة لطريقة المشاركة،
سنقوم بهذه المصادقة على طول الطريق حتى هذه النقطة.
أنا فقط ذاهب لنسخ ذلك هناك،
أغلق نقطة النهاية هذه وللوظيفة.
عندما يتم نشر ملف،
كيف نتعامل مع هذه المشاركة؟
للتعامل مع المشاركة هنا،
لا أحتاج إلى التالي لهذا.
الآن، بالإضافة إلى مصادقة فيريفيوسر ومصادقة فيريفيادمين،
على نفس السطر سوف تكوين التحميل.
لذلك، أذكر أنني قمت بتكوين التحميل باستخدام مولتر هنا.
لذلك، أنا ذاهب للاستفادة من التحميل الذي
يدعم وظيفة تسمى upload.single.
تأخذ هذه الوظيفة المفردة كمعلمة.
اسم حقل النموذج الذي يحدد هذا الملف،
سترى أنه في فترة قصيرة.
حقل النموذج هذا سأسميه كـ ImageFile هنا.
تحميل واحد يعني أنه سوف يسمح لي لتحميل ملف واحد فقط هنا.
سيحدد هذا الملف المفرد في نموذج التحميل من جانب العميل
في تحميل النموذج متعدد الأجزاء باستخدام هذا الاسم هناك.
عندما يتم الحصول على الملف في التعليمات البرمجية،
إذا وصلت إلى هذه النقطة،
وهذا التحميل سوف تأخذ الرعاية من التعامل مع الأخطاء إذا كان هناك أي،
إذا لم يتم تحميل الملف بشكل صحيح وهلم جرا.
عندما تصل إلى هذه النقطة،
كان سيتم تحميل الملف بنجاح
وبالتالي تحتاج إلى التعامل مع الملف الذي تم تحميله.
عند هذه النقطة، سنقول Res.StatusCode هو
200 ثم Res.Setheader نوع المحتوى،
«تطبيق/json'. ما سأقوم به هنا هو أننا
سوف نمر هذا الكائن req.file من الخادم مرة أخرى إلى العميل.
سيحتوي كائن req.file هذا أيضًا على المسار إلى الملف الموجود هناك ويمكن
استخدام هذا المسار بواسطة العميل لتكوين أي
مكان يحتاج فيه إلى معرفة موقع ملف الصورة هذا.
على سبيل المثال، إذا كنت تحاول تحميل طبق
إلى جانب الخادم وتفاصيل الطبق إلى جانب الخادم،
فقد تقوم بتحميل الصورة إلى الخادم ثم
تحصل على عنوان URL لتلك الصورة ثم ربما تقوم
بتضمين عنوان URL لتلك الصورة في كائن json الذي يصف الطبق.
ثم قم بتحميل مستند json الطبق إلى جانب الخادم.
ثم يتم تمرير req.file مرة أخرى إلى العميل،
req.file كما سترى عند تشغيل هذا الخادم،
يحتوي req.file على الكثير من المعلومات حول
الملف الذي تم تحميله للتو، ولذا
سأفحص ذلك للحصول على معلومات حول الملف الذي قمت بتحميله للتو.
هذه هي الطريقة التي سنقوم بها بتكوين طريقة المشاركة هناك، وهذا هو الأمر.
جهاز توجيه التحميل الخاص بي جاهز لقبول تحميلات الملفات.
الآن، كل ما أحتاج إلى القيام به هو الذهاب إلى app.js ثم تكوين جهاز التوجيه التحميل.
لذلك، الذهاب إلى app.js
لدينا بالفعل كل هذه أجهزة التوجيه.
لذلك، اسمحوا لي فقط نسخ LeaderRouter الخاصة بهم ومن ثم
تكوين هذا كما UploadRouter.
لذلك، هذا هو في ملف UploadRouter هنا.
لذلك، سنقوم بتكوين UploadRouter ثم النزول أدناه هنا،
سنقوم الآن بتكوين نقطة النهاية ImageUpload.
لذا، تسمح لي نقطة النهاية ImageUpload بتحميل الملف.
لذلك، سيكون هذا UploadRouter. هذا كل شيء
تم تكوين طلبي الآن لقبول تحميلات الملفات.
لذلك، دعونا حفظ التغييرات ومن ثم الذهاب ونلقي نظرة على كيفية عمل التطبيق لدينا.
بالعودة إلى المحطة الطرفية،
تأكد الآن من أن لديك خادم MongoDB الخاص بك وتشغيله
في إحدى علامات التبويب الطرفية أو في أحد الأمر Windows.
في النافذة الأخرى،
لنبدأ تشغيل الخادم.
بمجرد تشغيل الخادم لدينا،
سنذهب إلى ساعي البريد ثم إرسال أو بالأحرى تحميل ملف من ساعي البريد.
لذلك، كما ذكرت،
لتحميل ملف،
سوف تستخدم البيانات متعددة الأجزاء/النموذج.
لذلك، أولا، اسمحوا لي أن تسجيل نفسي في.
لذلك، سأفعل وظيفة على المستخدمين المحليين تسجيل الدخول،
وسوف تسجيل نفسي في كمشرف لأن المشرف
فقط يمكن تحميل ملفاتهم هناك.
تذكر أن الخادم الخاص بك يعمل الآن في المنفذ الآمن.
لذا، سنقول https://localhost:3443،
وليس هناك تفويض هنا.
لذا، دعني أوقف التفويض هنا ثم أرسل الطلب إلى الخادم.
لذلك، في ساعي البريد، إذا كان هذا يحدث،
أنه يقول لا يمكن الحصول على أي استجابة،
وهذا هو لأنك الآن تشغيل الخادم الآمن.
لذا، في هذه الحالة،
لن يقبل ساعي البريد الشهادة الموقعة ذاتيًا التي تأتي.
لذلك، في هذه الحالة، افتح الإعدادات هنا وفي الإعدادات،
تحت حقل الإعدادات العامة،
سترى هذا التحقق من شهادة SSL.
إيقاف تشغيل ذلك بحيث يكون ساعي البريد الخاص بك على استعداد لقبول
الشهادة الموقعة ذاتيا التي قمنا بتثبيتها على جانب الخادم.
لذا، هذه هي الطريقة التي ستتمكن من الاتصال بالخادم الخاص بك في
نقطة نهاية تسجيل دخول المستخدم https://localhost:3443.
لذلك، عندما نحاول تسجيل الدخول الآن،
سترى الآن أن طلب المشاركة الخاص بك قد تم
قبوله بنجاح من قبل الخادم
ومن ثم رد الخادم مع معلومات الرمز المميز.
لذا، مرة أخرى، للتأكد من أن ساعي البريد يسمح لك بالاتصال بالخادم الآمن،
انقر فوق الإعدادات وتحت عام،
قم بإيقاف التحقق من صحة شهادة SSL.
لذلك، بمجرد تسجيل الدخول،
دعونا نسخ الرمز المميز هنا.
لذا، سأقوم بنسخ الرمز المميز هنا.
الآن، دعونا نحاول تحميل الملف.
لتحميل الملف، كما لاحظت،
نحتاج إلى تحميل هذا الملف على localhost: 3443،
ونقطة النهاية هي ImageUpload.
للقيام ImageUpload هنا
، في الرأس، نحتاج إلى تكوين التفويض.
لذا، سنقوم بتكوين التفويض،
ثم ستقول،
«حامل»، وتوريد الرمز المميز الذي حصلنا عليه.
لذا، احتفظ بنسخة من الرمز المميز في مكان ما وانسخ الرمز المميز في الرأس.
في الجسم، لتحميل ملف،
وسوف نستخدم هذا النموذج البيانات.
لذلك، هذا هو ما يسمح لك أن تفعل متعدد الأجزاء/نموذج البيانات هنا.
لذلك، عند النقر على بيانات النموذج،
هنا يمكنك توفير هذا الملف هنا الذي تريد تحميله.
لذلك، عند النقر فوق مفتاح جديد هنا،
استخدم هذا المفتاح كـ ImageFile.
أذكر أنه عندما قمنا بتكوين طريقة المشاركة على موقع UploadRouter،
حددنا قائلا تحميل واحد ImageFile.
لذا، هذا هو نفس المفتاح الذي ستستخدمه هنا.
ثم، عند إعطاء المفتاح،
ثم الجزء الثاني،
ستقوم بتعيين هذا من نص إلى ملف هنا.
لذلك، هذا هو ما يسمح لك لتحديد الملف كقيمة لهذا المفتاح معين.
لذا، سترى هذا الزر قادم قائلا، «اختر الملفات».
لذلك، يمكنك فتح ذلك ثم تحديد الملف الذي تريد تحميله.
لذا، هنا، أنا ذاهب للذهاب إلى بلدي،
لدي ملف في أحد المجلدات بلدي هنا.
لذلك، أنا فقط ذاهب للذهاب إلى صور الأصول،
وبعد ذلك سنقوم فقط تحميل ملف ينغ من هنا.
لذلك، يمكنك أن تقول،
«تحميل ملف معين».
لذلك، كما تتذكر،
قمنا بتكوين خادمنا لقبول ImageFile فقط.
لذلك، سوف نقول، «تحميل هذا الملف معين.»
ثم عند النقر على زر إرسال،
لذلك لاحظ أنه في الجسم،
لديك لتكوين هذا مع نموذج البيانات.
لذا، فإن بيانات multipart/form-data، ثم المفتاح هو ImageFile،
والقيمة هي الملف الذي حددته للتو،
ثم انقر فوق الزر إرسال.
لذلك، عند النقر فوق الزر إرسال،
سيتم تحميل الملف إلى جانب الخادم الخاص بك
ومن ثم سيرد الخادم مرة أخرى مع هذا الكائن.
لذلك، هذا هو ما يرد في
كائن req.file الموجود على كائن الطلب هنا.
لذلك، يحتوي هذا req.file، كما ترى، على اسم حقل.
اسم الحقل هو إيماجيفيل.
لذلك، لاحظ أن هذا هو بالضبط نفس هذا واحد هنا.
الاسم الأصلي، لذلك لاحظ أن تعبير الاسم الأصلي يحتوي على alberto.png،
وهو الملف الذي قمت بتحميله.
الآن يمكنك أن ترى لماذا عندما قمت بتكوين
التخزين واسم الملف، أقوم بتعيين file.originalname.
لذلك، هذا هو ما سيتم استخدامه هناك.
يمكنك رؤية نوع الترميز،
وmimetype، والوجهة،
والمجلد الذي تم وضع الملف فيه،
والمسار الفعلي للملف هنا،
والمسار النسبي من جذر مجلد الخادم هنا.
لذلك، يشير هذا المسار إلى حيث يمكن الوصول إلى الملف على جانب الخادم.
لذلك، إذا كنت تقوم بتكوين تفاصيل طبق أو زعيم، على سبيل المثال،
يمكنك ببساطة استخدام خاصية الصورة للزعيم إلى images/alberto.png.
لا ينبغي استخدام الجمهور على أي حال لأن المجلد العمومي
هو الذي يعمل كمجلد الجذر لخادمنا.
لذلك، تحتاج فقط لتزويد هذه الصور. البرتو.
لذلك، من هذا المسار الذي تحصل عليه،
بمجرد تحميل الملف بنجاح، قم
باستخراج هذا الجزء ثم استخدم ذلك للصورة في
مستند JSON الخاص بك الذي يصف القائد المحدد.
لذلك، هذه هي الطريقة التي نرفع بها ملف.
الآن، لإقناعك بأن الغرامة تم تحميلها،
دعنا نذهب إلى مشروعنا.
الذهاب إلى مشروعنا،
في المجلد العمومي،
يمكنك الآن أن ترى أن هناك مجلد فرعي الصور هناك.
في المجلد الفرعي للصور،
يمكنك رؤية ملف alberta.png الذي تم تحميله هناك.
الآن، يمكننا تحميل المزيد من ImageFiles إلى جانب الخادم الخاص بنا.
الآن، إذا حاولت تحميل غير إيماجيفيل،
سترى أن الخادم لن يقبل
غير إيماجيفيل ثم الرد مرة أخرى قائلا،
«لا يمكن قبول غير إيماجيفيل».
لذا، هذه هي الطريقة التي سنقوم بها بتكوين خادمنا السريع
لقبول تحميلات ImageFiles من جانب العميل.
مع هذا، نكمل هذا التمرين.
في هذا التمرين، رأينا كيف نستخدم
الوحدة النمطية الوصفية لتكوين خادمنا السريع
لقبول تحميلات الملفات على نقطة نهاية API /ImageUpload Rest.
عندما نقوم بالنشر إلى نقطة
النهاية، يتم تحميل الملف إلى مجلد محدد على موقع الخادم.
مع هذا، نكمل هذا التمرين.
هذا هو الوقت المناسب بالنسبة لك للقيام جيت الالتزام مع الرسالة «تحميل الملف».