Я использую blob responseType с Axios в своем приложении VueJS для загрузки документа с сервера. Когда код ответа равен 200, он работает нормально и загружает файл, но когда возникает какая-либо ошибка http, я не могу прочитать код состояния при обнаружении ошибки, поскольку ошибка является ответом JSON.
Кто-нибудь сталкивался с подобной проблемой и разработал способ преобразования типа ответа BLOB-объекта в JSON и выдал ошибку на основе кода состояния?
Я попытался отправить ответ в виде простого текста из бэкэнда Laravel и попытался преобразовать ответ в JSON или текст в интерфейсе, но безуспешно.
Я попытался прочитать заголовки ответа об ошибке, но не повезло.
Axios({
url: 'xxxx',
method: 'GET',
responseType: 'blob',
})
.then((response) => {
//code to read the response and create object url with the blob and download the document
})
.catch((error) => {
console.log('Error', error.message); //nothing
console.log('Error', error.error); //undefined
console.log('Error', error.data); //undefined
const blb = new Blob([error], {type: "text/plain"});
const reader = new FileReader();
// This fires after the blob has been read/loaded.
reader.addEventListener('loadend', (e) => {
const text = e.srcElement.result;
console.log(text);
});
// Start reading the blob as text.
reader.readAsText(blb);
});
Я просто хочу выбросить сообщение об ошибке на основе кода состояния. Если это 401, просто хотите, чтобы он был неавторизован, и что-нибудь еще добавьте в компонент.