前台下载后台返的二进制文件流

//axios 拦截器添加判断


//拦截 异常情况  返回正常json否者就下载
request.interceptors.response.use(async(response) => {
    if(response.data instanceof Blob){
      if (response.data.type === 'application/json') {
        const reader = new FileReader();
        reader.readAsText(response.data, 'utf-8');
        return await new Promise((resolve, reject) => {
          reader.onload = function () {
            const _res = JSON.parse(reader.result);
            resolve(_res)
          }
        })
        
      } else {
       return response.data

var elink = document.createElement('a')
          elink.download = '活跃商品Top10.xls'
          elink.style.display = 'none'
          var blob = new Blob([res], { type: 'application/vnd.ms-excel' })
          console.log(blob,'blob')
          elink.href = URL.createObjectURL(blob)
          document.body.appendChild(elink)
          elink.click()
          document.body.removeChild(elink)
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。