vue 下载二进制文件

文章目录

概要

vue 下载后端返回的二进制文件流

技术细节

javascript 复制代码
import axios from "axios";
const baseUrl = process.env.VUE_APP_BASE_API;
//downLoadPdf("/pdf/download?pdfName=" + res + '.pdf', res);
export function downLoadPdf(str, fileName) {
  var url = baseUrl + str;
  axios({
    method: "get",
    url: url,
    responseType: "blob",//一般都是blob
    headers: { isToken: false },//传不传token取决于后端要求
    // headers: { Authorization: "Bearer " + getToken() },
  }).then((res) => {
    // // 创建blob对象,解析流数据
    //基本都是res.data 
    //type类型pdf(application/pdf)
    //xlsx(application/vnd.openxmlformats-officedocument.spreadsheetml.sheet)
    //zip(application/zip)
    const blob = new Blob([res.data], {
      type: "application/pdf",
    });
    //1.浏览器打开-预览
    const url = window.URL.createObjectURL(blob);
    window.open(url);
    //使用a标签下载
    const a = document.createElement("a");
    // 兼容webkix浏览器,处理webkit浏览器中href自动添加blob前缀,默认在浏览器打开而不是下载
    const URL = window.URL || window.webkitURL;
    // 根据解析后的blob对象创建URL 对象
    const herf = URL.createObjectURL(blob);
    // 下载链接
    a.href = herf;
    // 下载文件名,如果后端没有返回,可以自己写a.download = '文件.pdf'
    a.download = fileName;
    document.body.appendChild(a);
    a.click();
    document.body.removeChild(a);
    // 在内存中移除URL 对象
    window.URL.revokeObjectURL(herf);
  });
}
相关推荐
threerocks1 小时前
什么?我连 A2A、MCP 都没学会,现在又来了 AG-UI、A2UI.
前端·aigc·ai编程
牛奶2 小时前
如何自己写一个浏览器插件?
前端·chrome·浏览器
亿元程序员2 小时前
为什么Cocos都4.0了还有人用2.x?
前端
MomentYY2 小时前
AI 到底是“懂”,还是在“猜”?
前端·人工智能·ai编程
鹏毓网络科技2 小时前
Cursor Rules 文件配置实战:3 个隐藏参数让我每月少写 40% 样板代码
前端·github
没烦恼3013 小时前
无痕模式下 HTTP\-First 拦截引发的“页面刷新”误判
前端
ZhengEnCi3 小时前
Q02-Vue-React-index.html完全指南
vue.js·react.js·html
文心快码BaiduComate3 小时前
从个人提效到组织提效:Comate辅助构建自我进化的AI研发系统
前端·程序员
hunterandroid3 小时前
Compose 状态管理:remember、rememberSaveable 与状态提升
前端
星栈3 小时前
Dioxus 接数据库最容易写歪的 3 个地方:sqlx + SQLite 怎么接才顺
前端·rust·前端框架