vue axios ts 封装流文件下载方法

// 定义文件下载的接口
interface DOWNFILETYPE {url: string; //请求地址method: string; //请求方式params: object; //请求参数filename?: string; //文件名称type: string; //文件类型
}

文件下载方法实现

function downloadFile(options: DOWNFILETYPE): any {const { url, method, params, filename, type } = options;let config = {url: url,baseURL: baseURL.baseURL,method: method,responseType: "blob",headers: {"X-Access-Token": getStore("token") ? getStore("token") : "",},};if (method == "get") {config["params"] = params;} else {config["data"] = params;}axios(config).then((response) => {let data = response.data;// 请求失败,后台返回jsonif (data && data.type && data.type.includes("application/json")) {let reader = new FileReader();reader.onload = function (event) {let result: any = reader.result;let message = JSON.parse(result).message;//错误处理(Message as any).closeAll();Message.error(message || "");};reader.readAsText(data);return true;}//请求成功,下载文件const content: any = data;const blob = new Blob([content], { type: "application/octet-stream" });let file_name = filename ? filename + type : response.headers["content-disposition"] ?decodeURIComponent(response.headers["content-disposition"].split("filename=")[1]) :"导出文件" + typeif ("download" in document.createElement("a")) {// 非IE下载const elink = document.createElement("a");elink.download = file_name;elink.style.display = "none";elink.href = window.URL.createObjectURL(blob);document.body.appendChild(elink);elink.click();URL.revokeObjectURL(elink.href);document.body.removeChild(elink);} else {// IE10+下载navigator.msSaveBlob(blob, file_name);}});
}

需要注意的点:
axios拦截器对返回流类型的设置

axios.interceptors.response.use(function(response) {console.log("Response", response)if (response.status == 200) {let responseData = response.dataif (response.config.responseType == "blob") {return response;}return responseData} else {return {}}},function(error) {}
)

vue axios ts 封装流文件下载方法相关推荐

  1. vue axios全局封装请求 和 vue三种js跳转页面方式

    axios全局封装请求 第一步在src文件下新建api文件 文件下新建request.js文件 // 导入axios import axios from "axios"; // 进 ...

  2. vue axios 简单封装以及思考

    先安装 axios npm install axios axios的详细介绍以及用法 就不多说了请 移步 github ➡️  https://github.com/axios/axios 下面是简单 ...

  3. vue axios 实现 文件流下载(前后端分离跨域问题的解决)

    前端代码 后端以流的形式返回 单个文件下载 @RequestMapping(value = "download", method = RequestMethod.POST)@Api ...

  4. vue 后端返回二进制流文件,前端如何实现下载?

    目录 1. axios 请求二进制流文件导出文件 1.1 后台返回的二进制流: 1.2 使用: 1.3 需要注意以下几点: 2. 关于 arraybuffer 和 blob 2.1 ArrayBuff ...

  5. vue+axios方法封装(restful,ajax)

    this.$get({url: '',data: {},success: (data) => {}}) import qs from 'qs'// axios网络请求 function ajax ...

  6. vue项目请求封装;axios封装使用

    vue项目,封装axios请求方式和响应状态码:以及接口的api封装: 目录结构: 1.具体在src/utils/request.js下封装axios: ①引入axios和router ②引入elem ...

  7. vue axios封装 获取微信公众号用户的openid

    目录 axios封装 openid vue vue+ts axios封装 一般会在项目的src目录中,新建一个文件夹,作为网络请求模块,用来封装axios, 创建axios实例: axios.crea ...

  8. 在项目中用ts封装axios

    写在前面 虽然说Fetch API已经使用率已经非常的高了,但是在一些老的浏览器还是不支持的,而且axios仍然每周都保持2000多万的下载量,这就说明了axios仍然存在不可撼动的地位,接下来我们就 ...

  9. vue中Axios的封装与API接口的管理详解

    一:axios的封装 vue项目中,和后台交互获取数据这块,我们通常使用的是axios库,它是promise的http库,可运行在浏览器端和node.js中. 安装 npm install axios ...

  10. vue如何封装请求接口方法

    vue如何封装请求接口方法 方法一 首先创建一个server.js文件 引入axios和qs //引入axios和qs插件 import axios from 'axios' import qs fr ...

最新文章

  1. MVC中获取模型属性的Range和StringLength验证特性设置
  2. linux命令——tar
  3. 【数字信号处理】周期序列 ( 正弦序列特性 | 单个模拟周期采集 m 个数字样本 | Q 个模拟周期采集 P 个数字样本 | 非周期序列的情况 | 数字信号周期 )
  4. TABLES ABOUT CRM MARTETING
  5. Boost:bind绑定和数据成员以及高级用途的测试程序
  6. 经典C语言程序100例之一零零
  7. 数据库面试题【十四、主键使用自增ID还是UUID】
  8. zabbix3监控ESXI主机
  9. react学习(61)--js contact
  10. 吃透理财三句话人人都能成百万富翁
  11. web前端效率提升之浏览器与本地文件的映射-遁地龙卷风
  12. 通信原理笔记(樊昌信第七版)
  13. html页面小宠物代码大全,宠物店网页设计html代码
  14. Stata 15详细安装步骤
  15. html输入框只能输入整数,轻松让INPUT框只能输入整数
  16. 寻找IT行业中的引爆点
  17. …… ᵇᵘᵗ ᵗʰᵃᵗ ʸᵒᵘ ˡᵒᵛᵉ ⁿᵒ ᵒⁿᵉ 【transshipment】
  18. laravel中guard是什么
  19. DNF史诗计算机最新版,dnf全职业史诗装备搭配计算器2020
  20. 程序人生 - 详解微星笔记本几大系列

热门文章

  1. 爬去当当热销图书信息
  2. Android实现ping功能
  3. js调用html文件上传,JavaScript里的文件上传API
  4. CSDN-markdown编辑器语法——背景色
  5. 重置mysql数据库密码_重置mysql数据库密码的方法
  6. 微信小程序中使用icon
  7. nxlog管理配置linux,IIS服务器配置NXLog进行syslog转发(并解决GMT+8小时时差问题)...
  8. 肖维勒准则matlab_肖维勒准则.PPT
  9. 拉扎维模拟CMOS集成电路设计python建模工程——利用matplotlib绘制NMOS与PMOS转移特性曲线
  10. W型加密栅栏密码解密