Одним из способов, которые уже упоминались, было бы добавление невидимого <iframe>
и добавление URL
в JS, но будут некоторые ошибки безопасности, которые будут появляться.
В моем методе ниже я использовал
Axios.js
, чтобы позволить мне безопасно загрузить файл, который также включает
Promises
.
Axios.JS CDN: <script
src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.18.0/axios.js"></script>
JS
function DownloadFromUrl(url, mime) {
axios({
url: url,
method: 'GET',
responseType: 'blob', // important
}).then((response) => {
const url = window.URL.createObjectURL(new Blob([response.data]));
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', 'file.' + mime);
document.body.appendChild(link);
link.click();
});
}
$.ajax({
type: "POST",
url: "/Reporting/ReportAPI",
data: '{PatientId:"BH0012"}',
contentType: "application/json,utf=charset-8",
datatype: "JSON",
success: function(response) {
// Response = URL
// Mime = File Type - pdf, jpeg, png, bmp, exe, js...
DownloadFromUrl(response, "pdf");
}
});
Оберните параметр MIME
в строку или измените приведенный выше код для проверкиMIME Type
Вот JSFiddle: https://jsfiddle.net/5mnethL1/2/