开发避坑指南(70):Vue3 Http请求头携带token下载pdf文件解决方案

问题

Vue3中http请求如何下载预览pdf文件?请求头中如何携带token?

解决办法

使用axios下载PDF文件,通过Blob对象处理二进制数据流实现。请求头中携带token则通过在axios请求中添加headers实现。代码如下:

1、main.js中全局引入axios或则vue组件中单独引入axios

vue 复制代码
import axios from 'axios'

2、使用axios发送下载请求

vue 复制代码
axios({
  method: 'get', // 使用GET请求方法
  responseType: 'blob', // 指定响应数据类型为二进制大对象(Blob),用于处理文件流
  url: url, // 请求的PDF文件URL地址
  headers: {
    'X-Auth-token': token // 在请求头中添加认证token,用于身份验证
  }
}).then(res => {
  // 将接收到的二进制数据创建为Blob对象,使用响应头中的content-type指定文件类型
  const blob = new Blob([res.data], { type: res.headers["content-type"] });
  
  // 浏览器兼容性处理:优先使用标准URL接口,回退到webkitURL(兼容旧版浏览器)
  var URL = window.URL || window.webkitURL;
  
  // 为Blob对象创建临时URL链接,可用于文件访问
  let href = URL.createObjectURL(blob);
  
  // 在新窗口或标签页中打开PDF文件进行预览
  window.open(href)
});
相关推荐
陈随易15 小时前
有生之年系列,Nodejs进程管理pm2 v7.0发布
前端·后端·程序员
冰暮流星16 小时前
javascript之事件代理/事件委托
前端
@yanyu66617 小时前
登录注册功能-明文
vue.js·springboot
陈随易17 小时前
AI时代,你还在坚持手搓文章吗
前端·后端·程序员
里欧跑得慢19 小时前
17. Flutter Hero动画实现:让界面过渡更加优雅
前端·css·flutter·web
IT_陈寒20 小时前
Vue的这个响应式陷阱,我debug了一整天才爬出来
前端·人工智能·后端
kyriewen20 小时前
前端测试:别为了100%覆盖率而写测试,那是自欺欺人
前端·javascript·单元测试
去伪存真20 小时前
我自己写的第一个skills--project-core-standards
前端·agent
Data_Journal20 小时前
如何使用cURL更改User Agent
大数据·服务器·前端·javascript·数据库
竹林81820 小时前
wagmi v2 多链钱包切换:一个 Uniswap 仿盘项目让我踩了三天坑
前端·javascript