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);
  });
}
相关推荐
子兮曰15 小时前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰15 小时前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万15 小时前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝15 小时前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
A黄俊辉A15 小时前
uniapp webview中实现 app和内嵌的H5双向通信
vue.js·json
三十而立洋16 小时前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁17 小时前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
李少兄17 小时前
JavaScript 隐式全局变量解析
javascript
honkun618 小时前
vue 表格组件 vxe-table 配置 ajax 请求自动加载数据与表单查询
vue.js·vxe-table
kybs199118 小时前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net