Я хочу скачивать файлы с сервера с помощью вызовов AJAX.
Это можно легко сделать с помощью iframe
следующим образом:
var ifrm = document.getElementById("fileframe");
ifrm.src = "DownloadFile?fileid="+fileid;
Но у меня есть более сложная проблема.
В некоторых случаях вместо application / octet-stream ответ с типом содержимого 'text / html' возвращается бэкендом.
Я планирую использовать XMLHttpRequest
звонки для резервного копирования для загрузки файлов.
Используя XMLHttpRequest
, как я могу заставить браузер открыть диалоговое окно сохранения файла для обработки application / octet-stream?
// connect function handles the XMLHttpRequest communication with the backend
var connection = connect('DownloadFile','fileid='+fileid);
connection.onreadystatechange = function(){
if(connection.readyState == 4) {
var contentType = connection.getResponseHeader('Content-Type');
if(contentType == 'application/octet-stream'){
// here I want to make the browser popup a save file dialog
// for the incoming octet stream
// maybe I can direct stream to an iframe, but how??
}else{
alert(connection.responseText);
}
}
if((connection.readyState == 2)||(connection.readyState == 3)){
}
}