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;
}
相关推荐
爱泡脚的鸡腿3 分钟前
HTML CSS 第二次笔记
前端·css
灯火不休ᝰ18 分钟前
前端处理pdf文件流,展示pdf
前端·pdf
智践行20 分钟前
Trae开发实战之转盘小程序
前端·trae
最新资讯动态26 分钟前
DialogHub上线OpenHarmony开源社区,高效开发鸿蒙应用弹窗
前端
lvbb6636 分钟前
框架修改思路
前端·javascript·vue.js
qq_4560016537 分钟前
43、接口请求需要时间,导致页面初始加载时会出现空白,影响用户体验
javascript·vue.js·ux
工业互联网专业38 分钟前
基于springboot+vue的动漫交流与推荐平台
java·vue.js·spring boot·毕业设计·源码·课程设计·动漫交流与推荐平台
树上有只程序猿38 分钟前
Java程序员需要掌握的技术
前端
从零开始学安卓41 分钟前
Kotlin(三) 协程
前端