请求为blob,但是返回json格式,如何处理

在 Vue 3 中,如果你收到一个本应该是 blob 但实际上是 json 格式的响应,并且你错误地尝试使用 FileReader 来读取它,这实际上是不必要的,因为 json 数据已经是文本格式,可以直接被 JavaScript 处理。

但是,如果你确实收到的是二进制数据(可能是以 arraybufferblob 形式),并且这些数据实际上包含了 json 格式的文本,那么你需要使用 FileReader 来读取这些数据,并将其转换为文本,然后再解析为 JSON 对象。

下面是一个处理这种情况的示例:

javascript 复制代码
axios({  
  method: 'get',  
  url: '你的API地址',  
  responseType: 'blob' // 假设后端错误地返回了blob,但内容实际上是json格式的文本  
})  
.then(response => {  
  // 创建一个FileReader对象来读取blob数据  
  const reader = new FileReader();  
  reader.readAsText(response.data, 'utf-8'); // 读取blob数据为文本  
  reader.onload = function (e) {  
    try {  
      // 将读取到的文本解析为JSON对象  
      const jsonData = JSON.parse(e.target.result);  
      // 在这里使用解析后的JSON数据  
      console.log('jsonData:', jsonData);  
      // 根据返回的json数据做不同的操作  
      // ...  
    } catch (error) {  
      // 处理解析JSON时可能出现的错误  
      console.error('Error parsing JSON:', error);  
    }  
  };  
  reader.onerror = function (error) {  
    // 处理FileReader可能出现的错误  
    console.error('FileReader error:', error);  
  };  
})  
.catch(error => {  
  // 处理axios请求时可能出现的错误  
  console.error('Error fetching data:', error);  
});

在JavaScript中,由于浏览器环境的限制,文件读取操作通常是异步的,包括使用FileReader API 读取二进制文件内容。这是因为读取文件涉及到磁盘I/O操作,这可能需要一些时间,而JavaScript是单线程的,如果进行同步读取,可能会阻塞整个页面,导致用户体验下降。

因此,尽管有时我们可能希望同步读取文件内容以便更直接地处理数据,但在Web浏览器中通常不支持同步文件读取。FileReader API 没有提供同步读取的方法,所有的读取操作都是通过事件驱动的异步方式完成的。

相关推荐
繁依Fanyi11 分钟前
Animaster:一次由 CodeBuddy 主导的 CSS 动画编辑器诞生记
android·前端·css·编辑器·codebuddy首席试玩官
想起你的日子20 分钟前
Android studio 实现弹出表单编辑界面
java·前端·android studio
LuckyLay1 小时前
Vue百日学习计划Day9-15天详细计划-Gemini版
前端·vue.js·学习
大得3695 小时前
electron结合vue,直接访问静态文件如何跳转访问路径
javascript·vue.js·electron
水银嘻嘻7 小时前
12 web 自动化之基于关键字+数据驱动-反射自动化框架搭建
运维·前端·自动化
小嘟嚷ovo8 小时前
h5,原生html,echarts关系网实现
前端·html·echarts
十一吖i8 小时前
Vue3项目使用ElDrawer后select方法不生效
前端
只可远观8 小时前
Flutter目录结构介绍、入口、Widget、Center组件、Text组件、MaterialApp组件、Scaffold组件
前端·flutter
周胡杰8 小时前
组件导航 (HMRouter)+flutter项目搭建-混合开发+分栏效果
前端·flutter·华为·harmonyos·鸿蒙·鸿蒙系统
敲代码的小吉米9 小时前
前端上传el-upload、原生input本地文件pdf格式(纯前端预览本地文件不走后端接口)
前端·javascript·pdf·状态模式