blob文件导出,设置了responseType: ‘blob‘之后,如果返回json错误信息,处理方法

import request from '@/utils/request'
import { Message, MessageBox } from 'element-ui'


export async function downloadfile(url, name) {

  if (!url) return Message({ message: '下载文件链接为空', type: 'error' })
  if (!name) return Message({ message: '下载文件名称为空', type: 'error' })

  const res = await request({
    url: url,
    method: 'get',
    responseType: 'blob'
  })
  console.log(res)
  let reader = new FileReader(); //使用 new FileReader(),将 blob 转为 json,然后进行处理
  reader.readAsText(res)
  reader.onload = function (result) {
    try {
      let resData = JSON.parse(result.target.result);  // 解析对象成功,说明是json数据
      if (resData.code != 0) {
        Message({ message: resData.msg, type: 'error' })
      }
    } catch (err) {   // 解析成对象失败,说明是正常的文件流
      var objectURL = window.URL.createObjectURL(new Blob([res], { type: "text/csv;" }))
      var a = document.createElement('a');
      a.href = objectURL;
      a.download = `${name}.csv`;
      // a.target = '_blank'
      a.click();
      a = null
      window.URL.revokeObjectURL(objectURL);
    }
  };
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容