Ubuntu 18.04 + Firefox 70.0
Я хочу отправить файлы на мой серверный PHP-скрипт с помощью XMLHttpRequest. Я тестирую с помощью самой простой HTML-разметки и JS-скрипта в соответствии с: https://developer.mozilla.org/en-US/docs/Web/API/FormData https://developer.mozilla.org/en-US/docs/Web/API/FormData/append и https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects
Я не могу передать выбранные файлы в объявленном объекте FormData, а не сновые FormData (FormObject), ни с заполнением FormData файлами в цикле.
<form id='mcp-form0' enctype="multipart/form-data" method="post">
<input type="file" name="fichier" id="fichier" multiple="">
</form>
<script>
let inputElement=document.getElementById('fichier');
inputElement.addEventListener('change',handleFiles,false);
function handleFiles() {
let formDataConstructor = new FormData(document.getElementById('mcp-form0')),
formDataLoop=new FormData(),
control="\nSelected : \n",
fileList=this.files;
for(let i=0,n=fileList.length;i<n;i++){
let file = fileList[i];
formDataLoop.append("userfile[]",file,file.name);
control+="File : "+file.name+" de "+file.size+" bytes ("+file.type+")\n";
}
console.log(control);
console.log(fileList);
console.log(formDataConstructor);
console.log(formDataLoop);
}
</script>
Консольный ответ:
Selected :
Fichier : RetourPantalonMinouTiq.pdf de 33699 octets (application/pdf)
Fichier : rel01png.pdf de 47511 octets (application/pdf)
Fichier : rel00png.pdf de 101450 octets (application/pdf)
FileList(3) [ File, File, File ]
FormData { }
FormData { }
Подробности var 'control' показываетТо, что цикл выполнил правильную работу, но объект FormData, заполненный конструктором FormData, который будет содержать 3 выбранных мной файла, пуст, то есть объект FormData FormDataLoop, заполненный в цикле.
Iожидал, что оба будут:
FormData { File, File, File }
Я не могу найти свою ошибку. Не могли бы вы помочь мне?