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

vue zip文件下载请求封装与使用

axios封装(重点是响应拦截)
这里把响应超时时间注释是文件下载接口返回需要较长时间

import axios from 'axios'
import {ElMessageBox} from "element-plus";
import router from "@/router";const service = axios.create({baseURL: process.env.VUE_APP_BASE_API,// timeout: 10000
})
// console.log(process.env.VUE_APP_BASE_API)
// 请求拦截器
service.interceptors.request.use(config => {// 添加请求头等前置处理config.headers['Authorization'] = 'Bearer' + ' ' + localStorage.getItem('token')return config},error => {// 请求错误处理console.log('Request Error:', error)// return Promise.reject(error)}
)// 响应拦截器
service.interceptors.response.use(response => {// 响应后处理// 二进制数据则直接返回if (response.request.responseType === 'blob') {return response.data}if (response.status === 200 && response.data.code === 200) {return Promise.resolve(response.data)} else {if(response.data.code === 401){localStorage.removeItem('token')ElMessageBox.alert("登录状态已过期,请重新登录", '提示', {confirmButtonText: '去登录',callback: () => {router.replace("/login").then(r => {})}}).then(r =>{})}// return Promise.reject(response.data)}},error => {console.log('Response Error:', error)// return Promise.reject(error)}
)export default service

接口:

export function getZip(params){return request({url:"/exportZip",method:"get",params:params,responseType:"blob"})
}

页面:
Excel的话把type改成 { type: ‘application/vnd.ms-excel’ }

function exportEvaluation(){if(evaluationId.value!==null){const  loading = ElLoading.service({lock: true,text: '报告导出中...',background: 'rgba(0, 0, 0, 0.7)',})getEvaluationZip({id:evaluationId.value}).then(res=>{console.log(res)if(res){let filename = year.value+'评价报告导出'const blob = new Blob([res],{  type: 'application/zip' })let objectUrl = URL.createObjectURL(blob) // 创建URLlet link = document.createElement("a");link.href = objectUrllink.download =filename // 自定义文件名link.click() // 下载文件URL.revokeObjectURL(objectUrl); // 释放内存loading.close()}})}
}
http://www.lryc.cn/news/408004.html

相关文章:

  • Windows波形音频MMEAPI简介
  • sklearn聚类算法用于图片压缩与图片颜色直方图分类
  • Llama 3.1要来啦?!测试性能战胜GPT-4o
  • C++使用opencv处理图像阴影部分
  • 4.Java Web开发模式(javaBean+servlet+MVC)
  • centos7 mysql 基本测试(6)主从简单测试
  • 信息安全工程师题
  • springcloud rocketmq 新增的消费者组从哪里开始消费
  • Redis-缓存
  • MySQL练习05
  • [C++][STL源码剖析] 详解AVL树的实现
  • Kubernetes存储 - Node本地存储卷
  • Cocos Creator2D游戏开发-(2)Cocos 常见名词
  • 【不同设备间的数据库连接】被连接设备如何开权限给申请连接的设备
  • Whisper离线部署问题处理
  • 【Hive SQL】数据探查-数据抽样
  • 微信答题小程序产品研发-需求分析与原型设计
  • 基础模板Mybatis-plus+Springboot+Mysql开发配置文件
  • java-poi实现excel自定义注解生成数据并导出
  • LeetCode707 设计链表
  • [Mysql-DDL数据操作语句]
  • google 浏览器插件开发简单学习案例:TodoList;打包成crx离线包
  • 如何学习Doris:糙快猛的大数据之路(从入门到专家)
  • 梯度下降算法,gradient descent algorithm
  • Spring boot 2.0 升级到 3.3.1 的相关问题 (六)
  • C++模版基础知识与STL基本介绍
  • Android 防止重复点击
  • 使用阿里云云主机通过nginx搭建文件服务器
  • 微信Android一面凉经(2024)
  • VMware、Docker - 让虚拟机走主机代理,解决镜像封禁问题