vue elementui 大文件进度条下载

下载进度条

javascript 复制代码
<el-card class="box-card" v-if="downloadProgress > 0">
	<div>正在下载文件...</div>
	<el-progress :text-inside="true" :stroke-width="26" :percentage="downloadProgress" status="success"></el-progress>
</el-card>

下载方法

javascript 复制代码
downloadFile(row) {
   const xhr = new XMLHttpRequest();
   xhr.open('GET', row.certificatePdf, true);
   xhr.responseType = 'blob';

   // 监听下载进度
   xhr.onprogress = (event) => {
       if (event.lengthComputable) {
           this.downloadProgress = Math.floor((event.loaded / event.total) * 100);
       }
   };

   // 下载完成
   xhr.onload = () => {
       if (xhr.status === 200) {
           const blob = xhr.response;
           const link = document.createElement('a');
           link.href = window.URL.createObjectURL(blob);
           link.download = row.certificateName + '.pdf';
           document.body.appendChild(link);
           link.click();
           document.body.removeChild(link);
           this.downloadProgress = 0; // 重置进度条
       }
   };

   // 错误处理
   xhr.onerror = () => {
       console.error('下载失败');
       this.downloadProgress = 0; // 重置进度条
   };

   xhr.send();
},
css 复制代码
.box-card {
  position: fixed;
  right: 20px;
  top: 100px;
  width: 300px;
  font-size: 12px;
}
相关推荐
陆枫Larry1 分钟前
折叠屏“窗口化”导致的背景图错位:一次小程序样式问题的排查与修复
前端
米丘2 分钟前
vue 3.x 关于 provide 与 inject 实现原理
前端
进击的雷神3 分钟前
无分页一次性加载、多级CSS类名定位、动态User-Agent轮换、断点本地备份——意大利塑料展爬虫四大技术难关攻克纪实
前端·css·爬虫·python
天才熊猫君3 分钟前
Vue 3 v-for key 原理核心笔记
前端
zhedream4 分钟前
环境监测 CMMS 的表单 DSL 实践:从逐一开发到声明式生成,工单交付效率提升 10 倍
前端
Fisschl4 分钟前
Element Plus 自动导入 CSS 样式
vue.js
天若有情6736 分钟前
一款极简且实用的本地 NPM 包目录管理方案(个人原创设计)
前端·npm·node.js
JamesYoung79716 分钟前
第七部分 — 存储 chrome.storage(本地/同步/会话)+ 配额
前端·chrome
Mintopia11 分钟前
CSS 你不知道的颜色用法:从现代语法到真实落地的配色策略
前端·css
undeflined13 分钟前
EnvManage - 多环境开发代理管理工具
前端·javascript·node.js