黑豹程序员-vue3下载时显示下载的百分比

原理

axios 有一个方法:onDownloadProgress,它可以实时返回e.loaded 已经加载的值和e.total总数,
Math.round(e.loaded / e.total * 100) 通过计算刚好获取到已经处理的百分比。

实现代码

<template>
  <div>
    <button @click="downLoad(' 天农商-融联易云.pdf')">下载</button>

    <p>
      下载进度:{{downLoadProgress}}
    </p>
    <p>
      圆形:
      <el-progress type="dashboard" :percentage="downLoadProgress" :color="colors" />
    </p>
    <p>
      横条:
      <el-progress :percentage="downLoadProgress" :color="colors" />
    </p>

  </div>
</template>


<script setup>
import { ref } from 'vue';
import axios from 'axios'

var downLoadProgress=ref(0) //定义下载进度
const colors = [
  { color: '#f56c6c', percentage: 20 },
  { color: '#e6a23c', percentage: 40 },
  { color: '#5cb87a', percentage: 60 },
  { color: '#1989fa', percentage: 80 },
  { color: '#6f7ad3', percentage: 100 },
]


//下载
var downLoad=function( fileName ){
  axios.post("/api-basic/download", null, {
    params: {
      filePath: '/redis-latest.tar',
    },
    responseType: 'blob',
    onUploadProgress: function(progressEvent) {
      // 上传进度监听回调函数
    },
    onDownloadProgress: function(e) {
        downLoadProgress.value = Math.round(e.loaded / e.total * 100) //实时获取最新下载进度
    }
  }).then(res=>{
    let link = document.createElement("a");
    link.href = URL.createObjectURL(res.data);
    link.download = fileName;
    document.body.appendChild(link);
    link.click();
    URL.revokeObjectURL(link.href);

  })
}
</script>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值