js/axios/umi-request 根据后端返回的二进制流下载文件

javascript 复制代码
type ResponseType = {
  data: Blob;
  headers: {
    'content-disposition'?: string;
  };
};
// 下载 (创建a标签)
export const downloadBlob = (response: ResponseType) => {
  const blob = response.data; // 获取响应中的 Blob 数据
  const contentDisposition = response.headers['content-disposition'];
  let fileName = ''; // 默认文件名
  if (contentDisposition) {
    // 提取文件名并解码成中文
    const fileNameRegex = /filename=([^;]+)/;
    const fileNameMatch = contentDisposition.match(fileNameRegex);
    fileName = fileNameMatch ? fileNameMatch[1] : '';
    if (fileName) {
      fileName = decodeURIComponent(fileName);
    }
  }
  // 创建 Blob 对象后,你可以根据需要执行文件下载逻辑
  const url = window.URL.createObjectURL(blob);
  const link = document.createElement('a');
  link.href = url;
  link.download = fileName; // 设置下载文件的名称
  link.style.display = 'none';
  document.body.appendChild(link);
  link.click();
  // 清除创建的链接
  window.URL.revokeObjectURL(url);
  document.body.removeChild(link);
};

用法很简单。

javascript 复制代码
  const downLoad= async () => {
    const response = await axios(...);
    //将完整的响应头丢进去即可
    aDownload(response);
  };
相关推荐
康小庄几秒前
AQS独占模式——资源获取和释放源码分析
java·开发语言·jvm·spring boot·spring·spring cloud·nio
草明8 分钟前
macOS 查看当前命令行的ruby的安装目录
开发语言·macos·ruby
汤姆yu15 分钟前
基于python大数据的nba球员可视化分析系统
大数据·开发语言·python
feifeigo12323 分钟前
python从环境变量和配置文件中获取配置参数
开发语言·python·adb
轩宇^_^23 分钟前
C语言结构体与联合体详解
c语言·开发语言
waterHBO26 分钟前
python 爬虫,爬取某乎某个用户的全部内容 + 写个阅读 app,慢慢读。
开发语言·爬虫·python
ahhhhaaaa-32 分钟前
【AI图像生成网站&Golang】部署图像生成服务(阿里云ACK+GPU实例)
开发语言·数据仓库·人工智能·后端·阿里云·golang
一只编程菜鸟37 分钟前
Java + easyexcel 新旧数据对比,单元格值标红
java·开发语言
@菜菜_达44 分钟前
CSS a标签内文本折行展示
前端·css
霸王蟹1 小时前
带你手写React中的useReducer函数。(底层实现)
前端·javascript·笔记·学习·react.js·typescript·前端框架