Bonjour à tous ^^,
Voila je rencontre un petit problème avec mon code.
J'essaie d'uploader un fichier ou des fichiers (l'utilisateur a le choix) sur mon serveur. J'utilise du javascript pur dans le code ci-dessous, mais j'ai essayé avec du jQuery aussi. Dans ce code, je récupère les fichiers à partir d'une balise input et durant l'upload, j'actualise la barre de progression
var files = document.getElementById("files");
var progress = document.getElementById("progress");
var message = document.getElementById("message");
files.addEventListener('change', function(){
message.setAttribute('style', "alert alert-info");
var sender = new XMLHttpRequest();
sender.open("POST", '/uploadFiles');
sender.upload.addEventListener('progress', function(e){
var ratio = (e.loaded / e.total) * 100 ;
progress.innerHTML = ratio + "%";
progress.setAttribute('style', "width: " + ratio + "%");
})
sender.addEventListener('load', function(){
message.setAttribute('class', "alert alert-success");
message.innerHTML = "Files uploaded !"
})
var form = new FormData();
for (var i = 0; i < files.files.length ; i++){
form.append('file', files.files[i]);
}
sender.send(form);
})
Ce que j'aimerais, c'est avoir le fichier complet sur le serveur, car après, je dois encore effectué des traitements sur eux.
Malheureusement, ce que j'obtiens c'est que la requête envoyée au serveur ne contient que les metadatas du fichier (nom, chemin, etc) mais ne contient pas le fichier lui-même. J'ai testé d'envoyer une vidéo de 30Mo et la requête fait dans les 200B...
Je remercie d'avance tous ceux qui m'aideront :)
J'ai trouvé la solution à mon problème. En réalité le souci était du coté NodeJs qui ne supportait pas le multipart/form-data. Pour ça, j'ai utilisé le paquet npm multer qui permet de gérer les requêtes POST de ce type et il gère également la sauvegarde des données (sauvegarde sur disque dur ou RAM).
Voilà ^^
Le problème n'est pas du coté serveur, mais du côté client. Normalement, si je me trompe pas, le php se fait en back-end (je ne fais pas de php, donc je ne peux pas être sur de ce que j'avance). Mon souci, ce n'est pas de récupérer les données, mais de les envoyer (en tout cas, pour l'instant). Clairement, quand j'analyse la requête POST avec chrome, la requête n'est pas celle désirée (200B seulement) pour un fichier qui fait 30Mo. Je pense que le souci vient du script javascript à qui il manque quelque chose, mais je ne vois pas quoi :/