当前位置: 首页 > news >正文

vue中下载文件后无法打开的坑

今天在项目开发的时候临时要添加个导出功能我就写了一份请求加导出得代码,

代码:

    //导出按钮放开exportDutySummarizing (dataRangeInfo) {const params = {departmentName: dataRangeInfo.name,departmentQode: dataRangeInfo.qode}//拼接所需得urlconst baseUrl = Constants.SERVICES.duty + Constants.DUTY_SUMMARIZING_EXPORTthis.$axios({method: 'POST',url: utils.strFormat(baseUrl, {departmentName: params.departmentName,departmentQode: params.departmentQode}),headers: {Authorization: 'bearer ' + Cookies.get('Access-Token'),//token'Content-Type': 'application/json'},responseType: 'blob',//类型 这个必须要data: {//参数a: '1'}}).then((response) => {//公共的下载方法 在下面展示utils.download(response, dataRangeInfo.name + '名字.xlsx')}).catch(() => { })}//公共的下载方法util.download = function (data, filename) {if (!data && !filename) {return}let url = window.URL.createObjectURL(new Blob([data]))let link = document.createElement('a')link.style.display = 'none'link.href = urllink.setAttribute('download', filename)document.body.appendChild(link)link.click()}

 到这里请求文件流和导出文件得方法都已经写完了,这里面有的坑呢 打开就是返回得数据,大概就是你new Blob([data])得时候这个data是否是文件流,这个例子后端直接给我返回了文件流所以就直接使用了 一边都是res.data这样使用,再有就是responseType: 'blob',这个在请求文件流时请求头中必须要写,其他就没什么了。

如果到这里下载下来的文件还是无法打开请往下看

下面就要说的就是mockjs了

mockjs 会拦截axios, 初始化的时候给拦截响应设置了 responseType: ' ',

所以只需要把 mockjs注释掉或者在.env把VUE_APP_BUILD_MODE设置成nomock中就可以了.

改完记得重启项目!

http://www.lryc.cn/news/246575.html

相关文章:

  • 【追求卓越04】数据结构--栈与队列
  • 基于SpringBoot的超市信息管理系
  • 【计算机组成原理】存储系统
  • 基于SSM的旅游管理系统设计与实现
  • JeecgBoot3.0 漏洞升级 — 快速文档
  • 6.一维数组——用冒泡法,选择法将5个整数由大到小排序
  • YOLOv8 onnx 文件推理多线程加速视频流
  • CVE-2017-12615 文件上传
  • c++没有返回值的返回值
  • 全网最全卡方检验汇总
  • Java基础-中级-高级面试题汇(一)
  • 数据结构 / day04 作业
  • Java核心知识点整理大全20-笔记
  • Spark---转换算子、行动算子、持久化算子
  • 什么是关系型数据库?
  • 【LeetCode】挑战100天 Day12(热题+面试经典150题)
  • ArcGIS10.x系列 Python工具箱教程
  • 【蓝桥杯】刷题
  • 软件产品登记的材料条件
  • 春节后跟进客户开发信模板?外贸邮件模板?
  • 个人财务管理软件CheckBook Pro mac中文版特点介绍
  • rfc4301- IP 安全架构
  • 【数据结构/C++】线性表_双链表基本操作
  • 前端已死?看看我的秋招上岸历程
  • Flink Flink中的合流
  • 工业园区重金属废水深度处理工程项目,稳定出水0.1mg/l
  • element table滚动条失效
  • 代码随想录算法训练营 ---第四十六天
  • MySQL-02-InnoDB存储引擎
  • Qt路径和Anaconda中QT路径冲突(ubuntu系统)