multererror unexpected field multiple files flutter and node.js

425 Views Asked by At

Flutter form data

FormData formData = FormData.fromMap({
     "order_image": [
      for (var file in images)
        ...{
          await MultipartFile.fromFile(getImage(file).imageFile.path,
              filename: getImage(file).imageFile.path.split('/').last)
        }.toList()
    ],
  "user_name": "Jan"
    
  });

node js

router.post('/express-order', uploadFile.array(orderImageKeyName), postOrders);

multer middleware

var storage = multer.diskStorage({

destination: (req, file, cb) => {
    cb(null,settings.ORDER_IMG_DIR);
  },
  
  filename: (req, file, cb) => {

    cb(null, `${Date.now()}-bezkoder-${file.originalname}`);

    
  },
});
1

There are 1 best solutions below

0
D V Yogesh On

from Flutter form data

FormData formData = FormData.fromMap({
     "order_image": [
      for (var file in images)
        ...{
          await MultipartFile.fromFile(getImage(file).imageFile.path,
              filename: getImage(file).imageFile.path.split('/').last)
        }.toList()
    ],
  "user_name": "Jan"
    
  });

change to

FormData formData = FormData.fromMap({
    
  "user_name": "Jan"
    
});


formData.files.addAll([
    for (var file in images)
      ...{
        MapEntry(
            "order_image",
            await MultipartFile.fromFile(getImage(file).imageFile.path,
                filename: getImage(file).imageFile.path.split('/').last))
      }.toList()
  ]);

from node js we need to mention count in upload.array

multer({ storage: storage }).array(orderImageKeyName, 10)

final nodejs

router.post('/express-order', upld, postOrders);

change multer middle ware tooo

const util = require("util");

const upld = async(req, res, next) => {
   await util.promisify(uploadFile(req, res, next));
}

var storage = multer.diskStorage({

destination: (req, file, cb) => {
    cb(null,settings.ORDER_IMG_DIR);
  },
  
  filename: (req, file, cb) => {

    if(file.originalname.length>10)
    cb(null, `${Date.now()}-bezkoder-${file.originalname.substr(file.originalname.length-10,file.originalname.length)}`);
    
    else
    cb(null, `${Date.now()}-bezkoder-${file.originalname}`);

    
  },
});
var uploadFiles = multer({ storage: storage }).array(orderImageKeyName, 10);
module.exports = uploadFiles;