проблемы при заполнении объектов FormData файлами - PullRequest
1 голос
/ 04 ноября 2019

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 }

Я не могу найти свою ошибку. Не могли бы вы помочь мне?

...