【发布时间】:2019-10-10 16:28:05
【问题描述】:
我在我的 VueJS 应用程序中使用带有 Axios 的 blob responseType 从服务器下载文档。当响应代码为 200 时,它可以正常工作并下载文件,但是当出现任何 http 错误时,我在捕获错误时无法读取状态代码,因为错误是 JSON 响应。
有没有人遇到过类似的问题,想出办法将 blob 响应类型转换为 json 并根据状态码抛出错误?
我尝试从 Laravel 后端以纯文本形式发送响应,并尝试在前端将响应转换为 JSON 或文本,但没有成功。
我已尝试读取错误响应标头,但没有成功。
公信力({ 网址:'xxxx', 方法:'GET', 响应类型:'blob', }) .then((响应) => { //读取响应并使用blob创建对象url并下载文档的代码 }) .catch((错误) => { console.log('错误', error.message); //没有 console.log('错误', error.error); //不明确的 console.log('错误', error.data); //不明确的 const blb = new Blob([error], {type: "text/plain"}); const reader = new FileReader(); // 这在 blob 被读取/加载后触发。 reader.addEventListener('loadend', (e) => { 常量文本 = e.srcElement.result; 控制台.log(文本); }); // 开始将 blob 作为文本读取。 reader.readAsText(blb); });我只想根据状态码抛出错误信息。如果它是 401 只是希望它是未经授权的,并且其他任何东西都将它扔到组件上。
【问题讨论】:
-
@tony19 你提到的问题中没有关于 blob 的内容。
-
@Tarasovych
responseType字段与状态码无关,无论如何都以相同的方式访问。 -
您可能会发现这很有帮助:Error Response for blob type。这是一个类似的问题,有几个解决方案。
-
@Sai,请检查其中一个答案是否解决了您的问题,并将其标记为已接受。
标签: json laravel vue.js axios blob