Multer not accepting files in array format gives 'Unexpected File Error' Multer not accepting files in array format gives 'Unexpected File Error' express express

Multer not accepting files in array format gives 'Unexpected File Error'


The reason for the error is that multer currently does not support the array syntax that ng-file-upload uses by default which is files[0], files[1], files[2], etc. multer is expecting a series of files with the same field name.

The easiest solution is to set ng-file-upload's arrayKey option like so to avoid appending the [index] part:

Upload.upload({  url: '/api/data/addtweet',  arrayKey: '', // default is '[i]'  data: {    files: files  }})


If someone is facing a similar issue when uploading a custom form data object, you can use this approach. In here I am not using ngFileUpload.

Client Side code

var fd = new FormData();for( var i =0; i< files.length ; i++ ){    fd.append('fileItems' , files[i] );}fd.append('_id', params._id );              fd.append('user', params.user );              return $http.post( ROOT_URL + '/uploadFiles/', fd, {    transformRequest: angular.identity,    headers: {'Content-Type': undefined }});

Express Router

var multer  = require("multer");var upload = multer({ dest: "uploads/" });app.post('/api/uploadFiles', upload.array('fileItems'), handlers.files.uploadFiles);