А в чём проблема отправить и получить файл через Ajax?
В HTML создаётся пустая ссылка:
<a href='' id='report-link' download style='display: none;'></a>
В JS:
var data = new FormData();
data.append('file', document.getElementById('file').files[0]);
var post = new XMLHttpRequest();
post.open('POST', 'where/to/send', true);
post.onreadystatechange = function() {
if (post.readyState != 4) {
return;
}
hideSpinner();
switch (post.status) {
case 200:
var a = document.getElementById('report-link');
a.href = '/get/file/from&id=' + post.responseText;
a.click();
break;
...
}
}
showSpinner();
post.send(data);
То бишь, отправили файл через Ajax, дождались ответа, подставили его идентификатор в ссылку и кликнули по ней.