La voie à suivre avec javascript :
var data = new FormData();
$.each($("input[type='file']")[0].files, function(i, file) {
data.append('file', file);
});
$.ajax({
type: 'POST',
url: '/your/url',
cache: false,
contentType: false,
processData: false,
data : data,
success: function(result){
console.log(result);
},
error: function(err){
console.log(err);
}
})
Si vous appelez data.append('file', file) plusieurs fois, votre requête contiendra un tableau de vos fichiers.
Extrait des documents Web du MDN :
"Le append()
de la méthode FormData
ajoute une nouvelle valeur à une clé existante dans un fichier de type FormData
ou ajoute la clé si elle n'existe pas déjà. La différence entre FormData.se
t et append()
est que si la clé spécifiée existe déjà, FormData.set
sera écraser toutes les valeurs existantes avec la nouvelle valeur, tandis que append()
ajoutera la nouvelle valeur à la fin de l'ensemble des valeurs existantes."
J'utilise moi-même node.js et multipart handler middleware multer pour obtenir les données comme suit :
router.post('/trip/save', upload.array('file', 10), function(req, res){
// Your array of files is in req.files
}