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;
}
相关推荐
程序员黑豆2 小时前
AI全栈开发之Java:什么是JDK
前端·后端·ai编程
To_OC2 小时前
万字解析《JS语言精粹》之第四章:函数15大核心精髓(JS灵魂核心)
前端·javascript·代码规范
mqcode2 小时前
Vue3 + Element Plus + Vite 企业级后台框架搭建全流程
前端
SL-staff2 小时前
Web 白板技术架构深度解析:从渲染到协作的选型哲学
前端·架构
微扬嘴角2 小时前
react篇4--setState、LazyLoad和Hooks
前端·javascript·react.js
杨梦馨2 小时前
万级数据表格卡死?Web Worker 一招搞定
前端·javascript·vue.js
阿明在折腾3 小时前
从Canvas到AI模型:我在线工具站里的图片处理实战
前端·后端
CainChen3 小时前
Chrome 远程调试 Android 卡在 Pending authentication 的解决办法
前端
杨运交3 小时前
[030][Web模块]Spring Boot 验证与 OpenAPI 集成实战:从校验规则到文档生成
前端·spring boot·python
天le3 小时前
基于cocos3.x复刻《猪了个猪》挪了个船:位置生成实现
前端