JS:Axios文件下载

简介: JS:Axios文件下载

本例使用vue做前端项目 和 express做后端服务

axios的config参数 responseType: 'blob' ,很多地方都提到需要设置,我没有设置也能正常下载

依赖

  • concurrently 插件来运行命令
  • nodemon 监控重启 node 后台
  • cors 处理跨域

a标签下载文件

download(){
    let href  = "http://localhost:8080/download";
    const dom = document.createElement('a');
    dom.style.display = 'none';
    dom.href = href;
    document.body.appendChild(dom);
    //点击下载
    dom.click();
    //下载完成移除元素
    document.body.removeChild(dom);
},

axios下载

async downloadFile(){
    const res = await axios.get("http://localhost:8080/file");
    console.log(res);
    const blob = new Blob([res.data], {type: res.headers['content-type']});
    let patt = new RegExp("filename=([^;]+\\.[^\\.;]+);*");
    let result = patt.exec(res.headers['content-disposition']);
    let filename = decodeURI(result[1]);
    const downloadElement = document.createElement('a');
    const href = window.URL.createObjectURL(blob);
    console.log(filename);
    downloadElement.style.display = 'none';
    downloadElement.href = href;
    downloadElement.download = filename ; //下载后文件名
    document.body.appendChild(downloadElement);
    downloadElement.click(); //点击下载
    document.body.removeChild(downloadElement); //下载完成移除元素
    window.URL.revokeObjectURL(href); //释放掉blob对象
}

后端服务需要做一些特殊设置

// 设置的文件名,需要对 filename 进行转码,防止下载的文件名中有中文时出现乱码。
res.setHeader("Content-Disposition", "attachment; filename=" + encodeURI(filename));
res.setHeader("Content-Type", 'application/octet-stream');
// axios下载文件取不到content-disposition需要添加响应头
res.setHeader("Access-Control-Expose-Headers", "Content-Disposition");

下载图片

可以直接用img标签加链接就可以显示

<img v-if="imageSrc" :src="imageSrc" alt="">

代码文件:https://github.com/mouday/Vue-Demo/tree/main/vue-axios

参考

使用axios如何下载文件

https://blog.csdn.net/shuangmu9768/article/details/108846417

相关文章
|
搜索推荐 安全 生物认证
如何使用 FOFA 搜索引擎保姆级教程(附链接)
如何使用 FOFA 搜索引擎保姆级教程(附链接)
|
算法 程序员 开发工具
C语言编程规范
C 语言编程规范有助于提升代码的可读性、可维护性和可移植性。主要包括:命名规范(如 `my_variable`、`MAX_SIZE`)、代码缩进与空格、注释(解释逻辑但不过度)、函数设计(短小精悍、参数不超过三个)、错误处理、避免魔法数字、选择合适数据结构、使用标准库、保持代码格式一致及版本控制。遵循这些规范能显著提高团队开发效率和代码质量。
1429 2
|
9月前
|
人工智能 移动开发 自然语言处理
什么是MaaS
MaaS(模型即服务)是一种以AI模型为核心的服务模式,提供从预训练、调优到部署的全生命周期支持。用户能低成本访问和集成先进AI模型,提升业务智能化。其核心特点包括模型为中心、灵活部署、成本优化及开放生态。应用场景涵盖智能客服、交通管理和移动应用开发等,助力企业快速实现智能化转型。
5264 1
|
弹性计算 数据可视化 数据挖掘
超好用的开源数据可视化分析工具DataEase
DataEase是一款强大的数据分析工具,支持多种数据源,通过拖拽操作即可快速生成图表,提供丰富的报表样式。本文介绍了如何使用DataEase创建数据分析仪表板,以及在阿里云上一键部署DataEase社区版的详细步骤。
超好用的开源数据可视化分析工具DataEase
|
Web App开发 JavaScript 开发者
谷歌浏览器chrome安装vue调试插件Vue-Devtools
谷歌浏览器chrome安装vue调试插件Vue-Devtools
1619 0
|
easyexcel Java API
Apache POI与easyExcel:Excel文件导入导出的技术深度分析
Apache POI与easyExcel:Excel文件导入导出的技术深度分析
|
机器学习/深度学习 算法 Go
YOLOv5网络结构解析
YOLOv5网络结构解析
|
测试技术 Linux Go
|
存储 关系型数据库 Oracle
|
网络协议 网络架构
arp,udp,icmp编码实现理解
arp,udp,icmp编码实现理解
325 0