اذهب إلى المحتوى

السؤال

نشر

السلام عليكم , 

يظهر لي هذا الخطأ عندما أريد أن أرفع مصفوفة من الصور كما أسلفتم لماذا ؟

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

error.jpg

Recommended Posts

  • 0
نشر
بتاريخ 16 دقائق مضت قال Ali Shouaa:

avatar: req.files

أعتقد الخطأ في هذا السطر، حيث أن avatar تقبل مصفوفة من السلاسل النصية، و أنت تمرر لها مصفوفة من أغراض الملفات، حاول استخدام دالة JSON.stringify لتحويل مصفوفة الملفات لسلسلة نصية.

  • 0
نشر

أنت تقوم بحفظ مصفوفة من الكائنات 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
نشر
بتاريخ 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  هل في هذا اشكال ؟

صصص.jpg

  • 0
نشر
بتاريخ 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()

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...