vue elementui 大文件进度条下载

打印 上一主题 下一主题

主题 1029|帖子 1029|积分 3087


下载进度条
  1. <el-card class="box-card" v-if="downloadProgress > 0">
  2.         <div>正在下载文件...</div>
  3.         <el-progress :text-inside="true" :stroke-width="26" :percentage="downloadProgress" status="success"></el-progress>
  4. </el-card>
复制代码
下载方法
  1. downloadFile(row) {
  2.    const xhr = new XMLHttpRequest();
  3.    xhr.open('GET', row.certificatePdf, true);
  4.    xhr.responseType = 'blob';
  5.    // 监听下载进度
  6.    xhr.onprogress = (event) => {
  7.        if (event.lengthComputable) {
  8.            this.downloadProgress = Math.floor((event.loaded / event.total) * 100);
  9.        }
  10.    };
  11.    // 下载完成
  12.    xhr.onload = () => {
  13.        if (xhr.status === 200) {
  14.            const blob = xhr.response;
  15.            const link = document.createElement('a');
  16.            link.href = window.URL.createObjectURL(blob);
  17.            link.download = row.certificateName + '.pdf';
  18.            document.body.appendChild(link);
  19.            link.click();
  20.            document.body.removeChild(link);
  21.            this.downloadProgress = 0; // 重置进度条
  22.        }
  23.    };
  24.    // 错误处理
  25.    xhr.onerror = () => {
  26.        console.error('下载失败');
  27.        this.downloadProgress = 0; // 重置进度条
  28.    };
  29.    xhr.send();
  30. },
复制代码
  1. .box-card {
  2.   position: fixed;
  3.   right: 20px;
  4.   top: 100px;
  5.   width: 300px;
  6.   font-size: 12px;
  7. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

慢吞云雾缓吐愁

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表