react 从后端获取文件流导出

//掉用后端接口 获取文件数据 POST 请求
export function exportGetFile(url: string, data: any) {
  return executeAndTryCatch(() =>
    request<Record<string, any>>(url, {
      method: 'GET',
      params: data,
      responseType: 'blob',
      getResponse: true, // 用来获取后端返回的文件的名字
    }),
  );
}
//掉用后端接口 获取文件数据 GET 请求
export function exportGetFile(url: string, data: any) {
  return executeAndTryCatch(() =>
    request<Record<string, any>>(url, {
      method: 'GET',
      params: data,
      responseType: 'blob',
      getResponse: true, // 用来获取后端返回的文件的名字
    }),
  );
}
type DownloadFileType = {
  url: string;
  data?: any;
  fileName?: string;
  method?: string;
};

// 封装掉用下载的方法
export const downloadFile = async ({
  url,
  fileName,
  data = {},
  method = 'post',
}: DownloadFileType) => {
  const res: any =
    method.toLowerCase() === 'get'
      ? ((await exportGetFile(url, data)) as Blob)
      : ((await exportPostFile(url, data)) as Blob);
  const。filename = (
    res.response.headers.get('content-disposition').split('filename=')?.[1] || ''
  ).replace(/"/g, '');
  const blob = new Blob([res]);
  const elink = document.createElement('a');
  elink.download =。filename || fileName || 'download.xlsx';
  elink.style.display = 'none';
  elink.href = URL.createObjectURL(blob);
  document.body.appendChild(elink);
  elink.click();
  URL.revokeObjectURL(elink.href); // 释放URL对象
  document.body.removeChild(elink);
};
// 使用的地方
const config = {
	data: {},
	method: 'get',  
}
const url = exportFile(id);
config.url = url;
config.fileName = '参数配置.json';
downloadFile(config);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值