s.o/4856917
Simplest example
by rudiedirkx
HTML
<input id="files" type="file" />
JavaScript
document.getElementById('files').addEventListener('change', function(e) {
var file = this.files[0];
var xhr = new XMLHttpRequest();
(xhr.upload || xhr).addEventListener('progress', function(e) {
var done = e.position || e.loaded
var total = e.totalSize || e.total;
console.log('xhr progress: ' + Math.round(done/total*100) + '%');
});
xhr.addEventListener('load', function(e) {
console.log('xhr upload complete', e, this.responseText);
});
xhr.open('post', '/echo/json/', true);
var data = new FormData;
data.append('file', file);
data.append('json', '{"foo":"bar"}'); // for jsFiddle
xhr.send(data);
});