【文件下载】接口传递文件成功和失败时,前端的处理方式

问题

使用bold类型从后端接口获取文件流,获取成功的时候通过a标签下载;失败的时候,后端返回的是json,这个时候就无法向用户展示后端返回的错误提示信息。

思路

根据返回类型是否为 application/json 区分是否返回成功,若失败,将blob格式转换为json格式。

代码

javascript 复制代码
    this.$http
        .post('/file/export', { exportType: 'xlsx' }, { responseType: 'blob' })
        .then(res => {
          if (res.data.type == 'application/json') {
            const reader = new FileReader()
            reader.readAsText(res.data, 'utf-8')
            reader.onload = () => {
              const result = JSON.parse(reader.result)
              this.$message.error(result.message)
            }
          } else if (res.data.type == 'application/octet-stream') {
            const downloadUrl = window.URL.createObjectURL(new Blob([res.data]))
            const link = document.createElement('a')
            link.href = downloadUrl
            document.body.appendChild(link)
            link.click()
          } else {
            this.$message.error('导出文件类型错误!')
          }
        })
        .catch(error => {
          this.$message.error('导出文件失败!')
        })
相关推荐
乘风gg3 分钟前
出事了,AI 提效后,老板让我裁员20%
前端·后端·ai编程
Amos_Web4 分钟前
Rspack 源码解析(三十二):rspack_plugin_runtime 如何抽象 chunk 加载与启动
前端
Amos_Web16 分钟前
通过 Rspack 源码学 Rust(二):所有权、借用与 `&mut`
前端
计算机魔术师23 分钟前
AI公司把「灾难性风险」写进招股书?Anthropic这5处反常
前端
西凉的悲伤23 分钟前
Jsoup 库 HTML 解析详解
java·前端·html·jsoup
niucloud-admin26 分钟前
NIUCLOUD PHP SAAS上门家政使用文档
前端·人工智能·ai编程
不一样的故事12638 分钟前
Prompt 工程(Prompt Engineering)
前端·人工智能·python
ZoeLandia42 分钟前
React08:自定义 Hook
开发语言·前端·react.js·typescript
2601_9499706943 分钟前
msgpackr 跨端三方库仓颉适配全流程
前端·javascript·flutter
Software攻城狮1 小时前
【uniapp和普通web 端开发的区别】
前端·uni-app·notepad++