Ali Shouaa نشر 22 يناير 2022 أرسل تقرير نشر 22 يناير 2022 السلام عليكم , يظهر لي هذا الخطأ عندما أريد أن أرفع مصفوفة من الصور كما أسلفتم لماذا ؟ router.post('/add-image',uploadArray.array('avatar', 12), async (req, res, next) => { const image = new Home({ avatar: req.files }) await image.save(); res.status(201).json({ message: "add new just image", imageId: image._id })}) --------------------------------------------------------------------------------------- Model : const homeSchema = new Schema({ avatar: [{ type: String}], created_at: { type: Date, default: Date.now},}) --------------------------------------------------------------------------------------- uploadArray : const multer = require('multer'); const path = require('path') /** * Handel multipart/form-data. الوصول للتخزين */ const storage = multer.diskStorage({ destination: 'uploads', filename: function (req, file, cb) { cb(null, Date.now() + path.extname(file.originalname)) } }); /** * User profile middleware. رفع الصورة */ const uploadArray = multer({ limits: { fileSize: 1024 * 1024 }, storage: storage , fileFilter: (req, file, cb) => { let fileTypes = /jpeg|jpg|png/; let mimeType = fileTypes.test(file.mimetype); let extname = fileTypes.test(path.extname(file.originalname).toLowerCase()); if (mimeType && extname) return cb(null, true); cb(new Error('غبر مسموح رفع هذا الملف')); }, }); module.exports = uploadArray 2 اقتباس
0 Wael Aljamal نشر 22 يناير 2022 أرسل تقرير نشر 22 يناير 2022 بتاريخ 16 دقائق مضت قال Ali Shouaa: avatar: req.files أعتقد الخطأ في هذا السطر، حيث أن avatar تقبل مصفوفة من السلاسل النصية، و أنت تمرر لها مصفوفة من أغراض الملفات، حاول استخدام دالة JSON.stringify لتحويل مصفوفة الملفات لسلسلة نصية. 1 اقتباس
0 Ali Shouaa نشر 23 يناير 2022 الكاتب أرسل تقرير نشر 23 يناير 2022 لقد قمت باستخدام هذه الداله const image = new Home({ avatar: req.files.toString('utf8') }) بعدها ظهرت المصفوفة هكذا فارغة اقتباس
0 سامح أشرف نشر 23 يناير 2022 أرسل تقرير نشر 23 يناير 2022 أنت تقوم بحفظ مصفوفة من الكائنات objects (كل صورة عبارة عن كائن)، وعليك أن تقوم بتحويل مصفوفة الملفات req.files إلى مصفوفة من مسارات الصور: let imagesPaths = []; for(avatar of req.files['avatar']) { imagesPaths.push(avatar.path); } // ثم نقوم بحفظ المصفوفة في قاعدة البيانات const image = new Home({ avatar: imagesPaths }); await image.save() اقتباس
0 Ali Shouaa نشر 23 يناير 2022 الكاتب أرسل تقرير نشر 23 يناير 2022 بتاريخ 8 ساعات قال سامح أشرف: أنت تقوم بحفظ مصفوفة من الكائنات objects (كل صورة عبارة عن كائن)، وعليك أن تقوم بتحويل مصفوفة الملفات req.files إلى مصفوفة من مسارات الصور: let imagesPaths = []; for(avatar of req.files['avatar']) { imagesPaths.push(avatar.path); } // ثم نقوم بحفظ المصفوفة في قاعدة البيانات const image = new Home({ avatar: imagesPaths }); await image.save() قمت بكتابتها اخي و لكن يظهر هذا الخطأ (node:13072) UnhandledPromiseRejectionWarning: TypeError: req.files.avatar is not iterable انا أجربها من postman هل في هذا اشكال ؟ 1 اقتباس
0 سامح أشرف نشر 23 يناير 2022 أرسل تقرير نشر 23 يناير 2022 بتاريخ 13 دقائق مضت قال Ali Shouaa: قمت بكتابتها اخي و لكن يظهر هذا الخطأ (node:13072) UnhandledPromiseRejectionWarning: TypeError: req.files.avatar is not iterable انا أجربها من postman هل في هذا اشكال ؟ إن كنت تستعمل أحدث إصدار من multer، فحاول تجربة الكود التالي: let imagesPaths = []; for (avatar of req.files) { imagesPaths.push(avatar.path); } console.log(imagesPaths); // طباعة مسارات الصور المرفوعة بهذا الشكل سوف تحصل على مسارات الصور ليتم حفظها من خلال الكود التالي: const image = new Home({ avatar: imagesPaths }); await image.save() اقتباس
السؤال
Ali Shouaa
السلام عليكم ,
يظهر لي هذا الخطأ عندما أريد أن أرفع مصفوفة من الصور كما أسلفتم لماذا ؟
5 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.