Uploading multiple files using formData()

arrays, javascript, upload, xmlhttprequest

Solution

You have to use `files.length` to append in JavaScript, and then send it via an Ajax request:

JavaScript:

var files = document.getElementById('fileToUpload').files;
for (var x = 0; x < files.length; x++) {
    fd.append("fileToUpload[]", files[x]);
}

PHP:

$count = count($_FILES['fileToUpload']['name']);
for($i = 0; $i < $count; $i++){
    echo 'Name: '.$_FILES['fileToUpload']['name'][$i].'<br/>';
}

Problem

``` var fd = new FormData(); fd.append("fileToUpload", document.getElementById('fileToUpload').files[0]); var xhr = new XMLHttpRequest(); xhr.open("POST", "uph.php"); xhr.send(fd); ``` uph.php: ``` var_dump($_FILES['fileToUpload']); ``` This works, but obviously for the `files[0]` only. How to get this working for chosen file? I tried removing the `[0]`, but it didn't work.

Original source