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 };