يجب تعديل كود HTML ليتم السماح برفع أكثر من ملف بالشكل التالي:
<input name="avatar" type="file" multiple />
أيضًا يجب تعديل كود Multer ليقوم بإستقبال أكثر من ملف بالشكل التالي:
app.post('/add-product', upload.array('avatar', 12), function (req, res, next) {
// req.files is array of `avatar` files
// req.body will contain the text fields, if there were any
})
ملاحظة يصبح الكائن الذي يحتوي على معلومات الصور باسم req.files وليس req.file وذلك لأنه يمكن أن يحتوي الآن على أكثر من صورة.
وفي حالة أردت أن ترفع الصور من خلال أكثر من حقل فيمكنك أن تستعمل upload.feilds على النحو التالي:
const cpUpload = upload.fields([{ name: 'avatar', maxCount: 1 }, { name: 'gallery', maxCount: 8 }])
app.post('/add-product', cpUpload, function (req, res, next) {
// يمكن الوصول إلى معلومات الصور بالشكل التالي
// req.files['avatar'][0] -> File
// req.files['gallery'] -> Array مصفوفة من الصور
})
الأمر الأخير هو أنه يجب تعديل الـ Schema في النموذج model ليتم تخزين مصفوفة من النصوص array of string بدلًا من نص واحد string:
const productSchema = new Schema({
avatar: [{
type: String
}]
});
ملاحظة: قد ترغب في تغير اسم الحقل ليكون avatars أو شيء آخر يعبر عن وجود أكثر من صورة بدلًا من avatar فقط.
ملاحظة: يرجى إضافة الشيفرات بمحرر الشيفرات وليس كصور