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);
  });
}
相关推荐
光影少年16 分钟前
vite+rust生态链工具链
开发语言·前端·后端·rust·前端框架
skywalk816316 分钟前
当前有什么流行的lisp的web框架吗?
开发语言·前端·lisp
IT_陈寒22 分钟前
为什么我的JavaScript变量老是不听使唤?
前端·人工智能·后端
HookJames25 分钟前
设计Section 06 · Component Sourcing & BOM Risk Control
前端
zhenxin012225 分钟前
HTML头部元信息避坑指南
前端·html
布局呆星37 分钟前
Vite代理解决前端跨域问题 | fetch请求 | 环境变量
前端
sghuter1 小时前
HTML头部元信息避坑指南
c语言·前端·html·cocoa
无心使然云中漫步1 小时前
Openlayers调用ArcGis地图服务之三 —— 要素查询(/query)
前端·arcgis·vue·数据可视化
薛定谔的猫19821 小时前
gradio学习代码部分
java·前端·javascript
yqcoder1 小时前
React 深度解析:类组件 (Class) vs 函数组件 (Function)
前端·javascript·react.js