平时下载文件访问后台给的下载链接点击自动下载即可,因文件需要验证身份信息,所以需要在Request headers中塞入token作为身份验证

既然链接直接打开不行,那就只能通过ajax访问的时候设置Request headers

请求数据格式设置成文件流,请求中添加 responseType: 'blob'

export function filedown() {return request({url:'.............',method:'get',responseType: 'blob',headers:{'Content-Type':'application/json',}})
}

ajax访问成功以后,返回的并不是我们想要直接下载的结果,返回的直接是文本内容,并且没有触发下载,例如


既然文件已经能访问到了,那就手动下载吧,

/*1 ajax文件格式是.text,下载用的是Blob文件流,所以手动修改请求的responseType的返回格式类型
*/
//JS 获取到Blob格式文件后下载方法,Blob格式在下面const link = document.createElement('a');  // 创建元素
let blob = new Blob([res.data]);
link.style.display = 'none';
link.href = URL.createObjectURL(blob);   // 创建下载的链接
link.setAttribute('download',  fileName+'.'+type);  // 给下载后的文件命名 fileName文件名  type文件格式
document.body.appendChild(link);
link.click();  // 点击下载
document.body.removeChild(link);  //  下载完成移除元素
window.URL.revokeObjectURL(link.href);  // 释放掉blob对象

基本上这样就结束了,但是!如果他没有权限呢?这个时候你文件返回的格式是Blob文件流,是看不到报错信息的,并且会执行下载,但是空文件甚至报错

这个时候就要把Blob文件流转换成字符串,再去判断需不需要执行文件下载或者提示登录信息之类的,整合以后如下

/*文件请求返回数据格式为Blob --- responseType: 'blob',JS ---获取到blob格式文件后的操作fileName --文件名type --下载文件格式
*/downFile(fileId,fileName,type){filedown(fileId).then(res =>{var reader = new FileReader();let that = thisreader.onloadend = function(event){//event 就是你要的返回内容//因为返回的报错格式是字符串,手动转换成对象,转换成功表示请求失败//转换失败就意味着你拿到的result是文件流,那么直接手动下载就好try{let data = JSON.parse(event.target.result)that.$message.error("请点击右上角登录后重新下载");}catch(err){const link = document.createElement('a');  // 创建a标签let blob = new Blob([res.data]);     link.style.display = 'none';link.href = URL.createObjectURL(blob);   // 创建下载的链接link.setAttribute('download',  fileName+'.'+type);  // 给下载后的文件命名document.body.appendChild(link);link.click();  // 点击下载document.body.removeChild(link);  //  完成移除元素window.URL.revokeObjectURL(link.href);  // 释放blob对象}};reader.readAsText(res.data);})
})

Vue 下载文件需要token设置相关推荐

  1. vue 下载文件流和捕获后端返回的状态码和错误信息的方法

    文件流下载需要注意的是 responseType: 'blob' ,否则下载的文件不能正确打开.但是当数据库返回400时,捕获不到error的错误信息,因为responseType设置了固定的返回格式 ...

  2. vue下载文件并重命名

    vue的项目,需要做一个文件上传下载的功能.上传是OK的,然鹅因为上传到minio的时候,使用了随机数命名,导致文件名称就变成了一大串字符.被客户驳回来了.那好吧,就加一个重命名功能好了. 不过这个项 ...

  3. vue下载文件自定义路径_npm 自定义配置 文件下载路径

    Nodejs 内置的npm默认会把模块安装在c盘的用户AppData目录下,以下步骤是为了让大家学习如何更改npm 安装目录的 首先你可以使用cmd命令进行查看当前电脑的npm 安装路径. 输入 np ...

  4. vue下载文件流完整前后端代码

    使用Vue时,我们前端如何处理后端返回的文件流 首先后端返回流,这里我把流的动作拿出来了,我很多地方要用 /*** 下载单个文件** @param docId*/@GetMapping("/ ...

  5. java接收前台tex格式t数据_java 下载文件时,设置response.setContentType 根据文件类型...

    Response.setContentType(MIME)的作用是时客户端的浏览器区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据. MIME的作用: 由于MIM ...

  6. Vue 下载文件txt、json格式等

    一.不使用依赖 this.code是要导出文件里的内容,(新建一个a标签来下载) //下载txt文件const element = document.createElement('a')element ...

  7. vue下载文件(zip格式),并解决中文乱码

    examineClick(index, tableData, id) { // 触发事件axios({method: 'post',url: `***`, // 接口responseType: 'bl ...

  8. 前端:下载文件(多种方法)

    一.简介 前端经常会有下载文件的需求,这里总结了几种常用的方法,方便日后查看. 二.a标签下载 <a href="https://abc.png" download=&quo ...

  9. Python+Selenium练习篇13-设置浏览器下载文件默认地址

    本文介绍如何设置浏览器下载文件默认地址 设置Selenium自动化下载的浏览器默认地址 本人使用浏览器Chrome,python3.7 代码如下: # coding=utf-8 from seleni ...

  10. 正确处理下载文件时HTTP头的编码问题(Content-Disposition),safari下载文件 中文名乱码问题

    目前支持ie9-11,firefox63.0,chrome69.0,qq10.2.1的版本,safari的最新版本(特别是解决mac下的safari中,下载文件的中文文件名问题). 下载文件时, 设置 ...

最新文章

  1. eShopOnContainers 知多少[12]:Envoy gateways
  2. Oracle入门(十五)之数据库锁
  3. python中的content方法_content最新:python计算Content-MD5并获取文件的Content-MD5值方式_爱安网 LoveAn.com...
  4. OBJECT_ID(Transact-Sql)
  5. php电脑维修店网站源码,某电脑维修网站整站打包 v1.1
  6. Java 员工信息管理系统
  7. mysql字符串拼接有空值_MySQL字符串拼接
  8. win10强制删除文件夹(“你需要来自XXX的权限才能对此文件夹进行更改”的解决方法)
  9. PHP 接入微信公众账号API
  10. 冯康 计算机组装与维护,计算机组装与维护_毕业论文.doc
  11. mysql压缩修复数据库_压缩修复Access数据库
  12. 尚学堂视频学习顺序 java如何自学
  13. 普适计算-2014/03/14
  14. 教你更划算的选择苹果最新产品Mac Studio
  15. Activity及其生命周期小结
  16. Hidden Message
  17. 【程序喵笔记】递归神经网络实现预测
  18. 什么是RPC?RPC与Stub简述
  19. D3.js 绘制带圆角的矩形 + 带箭头的指示线
  20. 非线性非高斯模型的改进粒子滤波算法(Matlab代码实现)

热门文章

  1. 屏幕录像软件使用教程?
  2. SMART原则是什么
  3. Web网页设计作业html
  4. 网络安全浏览器工作原理
  5. 天龙源码框架分析_天龙八部源码描述【转】
  6. 伴风网易博客linux,伙伴 - 成凹的日志 - 网易博客
  7. 基于JavaWeb的小区车辆信息管理系统
  8. PSAM卡、SAM卡、SIM卡
  9. hash算法_Win10_64 默认应用的UserChoice Hash算法学习
  10. 关于kafka中ISR、AR、HW、LEO、LSO、LW的含义详解