У меня есть один запрос GET, который возвращает файл JAR, который мне нужно скачать.
Самый простой способ загрузки части - это позволить браузеру обрабатывать часть загрузки следующим образом:
window.location.href = URL
Но это не работает для обработки ошибок (обработка ошибок сервера).
В качестве альтернативы, Я нашел другой способ , который создает объект BLOB-объекта и создает URL-адрес объекта из этого объекта и назначает его для привязки тега для загрузки -
callSomeURL().then((res) => {
const blob = new Blob([res._body], { type: res.headers.get('content-type')
});
const url = window.URL.createObjectURL(blob);
const linkElement = document.createElement('a');
linkElement.setAttribute('href', url);
linkElement.setAttribute('download', 'test jar file');
const clickEvent = new MouseEvent('click', {view: window});
linkElement.dispatchEvent(clickEvent);
}).catch((error) => error handling part)
тип содержимого - «application / java-archive»
res._body - закодированная строка.
Проблема в том, что загруженный файл неверен / поврежден. (Не уверен, что не так с реализацией).
У меня есть 2 вопроса здесь -
- Как правильно создать объект BLOB-объекта? Он создан с использованием закодированных данных, которые возвращает ответ, или URL запроса?
- Как правильно загружать файлы с обработкой ошибок?