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;
}
相关推荐
李少兄6 分钟前
深入理解前端中的透视(Perspective)
前端·css
江公望15 分钟前
HTML5 History 模式 5分钟讲清楚
前端·html·html5
云和数据.ChenGuang22 分钟前
Zabbix Web 界面安装时**无法自动创建配置文件 `zabbix.conf.php`** 的问题
前端·zabbix·运维技术·数据库运维工程师·运维教程
码界奇点25 分钟前
Java Web学习 第15篇jQuery万字长文详解从入门到实战解锁前端交互新境界
java·前端·学习·jquery
前端老曹34 分钟前
vue3 三级路由无法缓存的终极解决方案
前端·javascript·vue.js·vue
兮动人36 分钟前
Google Chrome 142更新引发内网访问危机:原理、影响与全面解决方案
前端·chrome
PAQQ37 分钟前
ubuntu22.04 搭建 Opencv & C++ 环境
前端·webpack·node.js
这是个栗子43 分钟前
git报错:Reinitialized existing Git repository in ...
前端·git·github
ghfdgbg1 小时前
15. Vue工程化 + ElementPlus
前端·javascript·vue.js
Onlyᝰ1 小时前
前端使用jscpd查项目重复率
前端