Как скачать файл, если в ответе получаем readableStream (JavaScript)
Допустим после ajax запроса у нас есть ответ response с типом данных readableStream. Задача: сделать так, чтобы этот поток сразу скачивался в файл.
Решение:
//функция для скачивания файла:
function downloadFile(blob, filename) {
const url = window.URL.createObjectURL(blob);
const a = document.createElement('a');
a.style.display = 'none';
a.href = url;
a.download = filename;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}
//запрос:
let data = {elementName: "value"};
fetch("http://mytesturl", {
method: "post",
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then( (response) => {
console.log('resp', response);
//если получили ответ в нужном формате, то вызываем скачивание файла:
response.blob().then(blob => downloadFile(blob, 'testfile.pdf'))
})
Комментарии