I believe this example demonstrates what your asking:
var filesSelected = document.getElementById("privateDocs").files;
var progressholders = document.getElementsByClassName("progressholders");
for(var i=0; i<filesSelected.length; i++) {
var p = document.createElement("progress");
p.value = "0";
p.max = "100";
var t = document.createElement("span");
progressholders[i].innerHTML = "";
progressholders[i].appendChild(p);
progressholders[i].appendChild(t);
var formData = new FormData();
formData.append('file', filesSelected[i], filesSelected[i].name);
UploadDocToServer("upload.php", formData, p, t);
}
the actual ajax function
function UploadDocToServer (formUrl, formData, progressBar, totalBar) {
var parent = progressBar.parentNode;
var ajaxRequest = new XMLHttpRequest();
ajaxRequest.upload.addEventListener("progress", function(event) {
totalBar.innerHTML = event.loaded + "bytes of " + event.total + "bytes";
var percent = (event.loaded / event.total) * 100;
progressBar.value = Math.round(percent);
}, false);
ajaxRequest.addEventListener("load", function(event) {
progressBar.parentNode.removeChild(progressBar);
var info = document.createElement("span");
info.innerHTML = event.target.responseText
parent.appendChild(info);
}, false);
ajaxRequest.addEventListener("error", function() {
progressBar.parentNode.removeChild(progressBar);
var info = document.createElement("span");
info.innerHTML = "Erorr Uploading.";
parent.appendChild(info);
}, false);
ajaxRequest.addEventListener("abort", function() {
progressBar.parentNode.removeChild(progressBar);
var info = document.createElement("span");
info.innerHTML = "Abort called.";
parent.appendChild(info);
}, false);
ajaxRequest.open("POST", formUrl);
ajaxRequest.send(formData);
}