Как скачать файл в браузере?
Я пытаюсь скачать файл .xlsx с сервера. У меня немного своеобразная авторизация, вместо получение токена я прямо отправляю логин и пароль, просто там совсем простенький сайт, буквально форма для ввода вот этих login, password и elections и кнопка для скачивания файлика. Файл действительно скачивается (и его размер примерно такой же, какой у файла, хранящегося на сервере, но немного отличается). Но при попытке открыть выясняется, что файл повреждён, и что открыть его нельзя. Есть ли в моём коде явные ошибки? Нужно ли мне сменить mime-тип? Может ли такая странная авторизация быть проблемой (сервер пока на стадии разработки, сейчас он вообще не проверяет логин и пароль и всегда делает вид, будто они правильные)? Быть может, blob и createObjectURL работают не так, как я думаю?
fetch(`${location.href}/${elections}`, {
method: 'GET',
headers: {
'Content-Type': 'application/vnd.ms-excel',
'Authorization': `${login}%${password}`,
},
}).then(res => res.blob())
.then(file => URL.createObjectURL(file))
.then(url => {
const virtualButton = document.createElement('a');
virtualButton.href = url;
virtualButton.download = 'results.xlsx';
document.body.appendChild(virtualButton);
virtualButton.click();
document.body.removeChild(virtualButton);
});