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

axios 下载大文件时,展示下载进度的组件封装——js技能提升

之前面试的时候,有遇到一个问题:就是下载大文件的时候,如何得知下载进度,当时的回复是没有处理过。。。

现在想到了。axios中本身就有一个下载进度的方法,可以直接拿来使用。

下面记录一下处理步骤:

参考链接:https://blog.csdn.net/yyh123456hhh/article/details/131637151

解决步骤1:给封装好的axios方法中添加onDownloadProgress

这个方法就是监听接口进度的方法了,可以作为入参进行处理。

解决步骤2:在使用request时,写入onDownloadProgress

export async function exportPageList(params, config, downloadProgress) {return request(`/api/quality-service/FeedReasons/export-feedreason-datas`,METHOD.GET,params,config,//请求头或者文档格式设置等downloadProgress//接口请求进度);
}

解决步骤3:具体使用方法

html部分:

<a-modaltitle="导出":footer="null":visible="visible":width="500":closable="false"><div class="download-progress"><a-progress :percent="percent" /><p>正在导出...</p></div>
</a-modal>

需要传入的参数:visible percent
是否展示弹窗和进度条占比

exportPageList(params,{responseType: 'blob'},(progress) => {this.visible = true;this.percent = (progress.loaded / progress.total) * 100;if (this.percent >= 100) {setTimeout(() => {this.visible = false;}, 200);}}
)
.then((res) => {let blobUrl = window.URL.createObjectURL(res);let link = document.createElement('a');link.style.display = 'none';link.download = `报废原因配置_${moment().format('YYYY/MM/DD')}.xlsx`;link.href = blobUrl;document.body.appendChild(link);link.click();document.body.removeChild(link);
})
.finally(() => {this.spinning = false;
});

最终效果如下:
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 算法金 | 来了,pandas 2.0
  • vue2 ant-design select组件自定义下拉框, dropdownRender 使用,以及遇到的坑
  • fastadmin 如何通过权限组来控制列的显示与隐藏
  • 老物件线上3D回忆展拓宽了艺术作品的展示空间和时间-深圳华锐视点
  • Sqlmap中文使用手册 - Request模块参数使用
  • Hutool-Guava
  • 如何安装dotenv,避坑指南,安装包的包名有误?
  • SpringBoot使用Redis(事务异步add + 更新)
  • 常见CSS属性
  • 学习小记-一些Redis小知识
  • 《警世贤文》摘抄:处人篇、受恩篇、宽人篇、听劝篇、劝善篇(多读书、多看报、少吃零食多睡觉)
  • 公司想无偿裁员,同事赖着不走
  • HTML+CSS+JS井字棋(来自动下棋)
  • 408数据结构-图的应用2-最短路径 自学知识点整理
  • RuntimeError: cuDNN error: CUDNN_STATUS_NOT_SUPPORTED.
  • 【剑指offer】让抽象问题具体化
  • 【知识碎片】第三方登录弹窗效果
  • 10个最佳ES6特性 ES7与ES8的特性
  • 2019年如何成为全栈工程师?
  • C++11: atomic 头文件
  • extjs4学习之配置
  • Fundebug计费标准解释:事件数是如何定义的?
  • JS变量作用域
  • Koa2 之文件上传下载
  • Linux Process Manage
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • PHP变量
  • Python利用正则抓取网页内容保存到本地
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • spring security oauth2 password授权模式
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • vue的全局变量和全局拦截请求器
  • vue总结
  • 模型微调
  • 批量截取pdf文件
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 译有关态射的一切
  • 用quicker-worker.js轻松跑一个大数据遍历
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • ​LeetCode解法汇总1276. 不浪费原料的汉堡制作方案
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (03)光刻——半导体电路的绘制
  • (3) cmake编译多个cpp文件
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (function(){})()的分步解析
  • (vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束
  • (ZT)薛涌:谈贫说富
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (一)为什么要选择C++
  • (转)平衡树