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);
    }
  };
}
blob文件导出,设置了responseType: ‘blob‘之后,如果返回json错误信息,处理方法
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
 平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 方案一 在请求下载的时候,为了解决乱码问题,我们都会给 XHR 的 responseType 指定为 blob 或...
- 在请求下载的时候,为了解决乱码问题,我们都会给 XHR 的 responseType 指定为 blob 或者 ar...
- 请求下载解决乱码问题, 会给XHR 的 responseType 指定为 blob 或者 arraybuffer;...
- 使用Retrofit+RxJava网络框架进行网络请求,对网络请求的结果进行处理需要实现三个方法onComplet...
- 一般的服务端框架返回的数据格式是确定的,在客户端和服务端交互的时候,如果交互成功那么服务端返回的状态码是200,具...