reach Umi 项目下载文件

reach Umi 获取后端api返回的文件流实现下载功能

umijs项目中想要实现下载功能要使用文件流下载的方式

一、后端文件流

我这边是下载压缩包
压缩包生成下载的方法
https://blog.csdn.net/qq_42894991/article/details/128918840?spm=1001.2014.3001.5501

二、前端调用

import { request } from 'umi';

// @url : `后端获取文件流的地址`
// @filenName  : `下载后的文件名`
// @data: `请求获取文件流的参数`
const download = async (url,filenName,data) => {
  const blob = await request(url, {
    method: 'GET',
    params: { ...data },
    // ...(options || {}),
    responseType: 'blob', // 必须配置这个,不然获取到的文件格式会错误
  });
  if (blob) {
    // 创建Blob对象,设置文件类型
   const  blob = new Blob([res], {
      type: 'Content-Type: application/zip;'
    })

    const link = document.createElement('a');
    // 下载后的文件名
    link.download = filenName+".zip";
    link.href = URL.createObjectURL(blob);
    document.body.appendChild(link)
    link.click();
    //释放URL对象
    URL.revokeObjectURL(link.href);
    document.body.removeChild(link);
    message.success("成功")
  }
  return response;
};

export { download };

猜你喜欢

转载自blog.csdn.net/qq_42894991/article/details/128933079