{title}

前端展示下载进度条;取消下载操作;

前端,展示,下载,进度条,取消,操作 · 浏览次数 : 581

小编点评

```html ```

正文

展示下载进度条,替换url即可;原文请点击
<template>
    <el-progress :percentage="percentage"></el-progress>
    <h1>{title}</h1>
    <el-button :disabled="isDisabled" @click="getProgress">下载文件</el-button>
</template>
<script>
  export default {
    data(){
        return {
            title:"请点击按钮进行下载。",
            percentage:0, //进度条的占比
            isDisabled:false,  //默认可以点击
        }
    },
    methods: {
      getProgress(){
        //进度条恢复为 0 
        this.percentage= 0;
        //按钮置灰 不可点击
        this.isDisabled= true;
        //发起请求
        this.$axios({
            //下载文件的远端地址。
            url:"https://文件地址.html",  
            //请求方式 get post。   
            method:"get",  
            //设置返回数据类型为base64的数据,这样才可以被new Blob() 解析。    
            responseType:"blob",
            //请求参数 get-->params   post-->data 。
            params:{},
            //xml返回数据的钩子函数,可以用来获取数据的进度 具体可查看axios的官网
            onDownloadProgress:(progressEvent)=>{
                //progressEvent.loaded 下载文件的当前大小
                //progressEvent.total  下载文件的总大小 如果后端没有返回 请让他加上!
                let progressBar = Math.round( progressEvent.loaded / progressEvent.total*100);
                //接收进度为99%的时候需要留一点前端编译的时间
                if(progressBar >= 99){
                    this.percentage = 99;
                    this.title = '下载完成,文件正在编译。';
                }else{
                    this.percentage = progressBar;
                    this.title = '正在下载,请稍等。';
                }
            } 
         }).then( res =>{
            //当前定义res.message 出现的时候说明后端文件返回出现了问题 不然应该直接是个文件流 
            if(res.message){
                this.title = '下载失败'
                this.isDisabled= false
                return
            }
            //blob返回的是一个 base64 格式的文件流
            let blob = new Blob([res],{
                //编译文件为xlsx类型。 具体可查看 blob 方法定义的类型 
               type:"application/vnd.ms-excel"  
            })
            //编译文件
            if(window.navigator && window.navigator.meSaveOrOpenBlob){
                window.navigator.meSaveOrOpenBlob(blob,"文件名称.xlsx")
            }else{
                let Url= window.URL.createObjectURL(blob);
                let link= document.createElemnet("a");
 
                link.style.display = "none";
                link.href = Url;
                link.setAttribute("download","文件名称.xlsx");
                document.body.appendChild(link);
                link.click();
            }
            //编译文件完成后,进度条展示为100%100
            this.percentage =100;
            //下载完成 可以重新点击按钮下载
            this.isDisabled= false;
        })
       }
    },
  };
</script>

下载到一半想取消下载? 原文请点击

<template>
   <div>
      <button @click="sendAxios">发送axios</button>
      <button @click="cancelHandert">取消请求</button>
      <button @click="sendAxios2">发送axios@2</button>
   </div>
</template>
<script lang="ts" setup>
import axios from 'axios'
function sendAxios() { 
   SendGiveServe()
}
let CancelToken;
let source:any;
function SendGiveServe() { 
   CancelToken = axios.CancelToken
   source = CancelToken.source()
   axios.get('https://xxx.com/list',{name:'张三'}, {
    cancelToken: source.token
   }).then(function (response) {
      console.log('返回来的数据1', response)
   }).catch(thrown => { 
      if (axios.isCancel(thrown)) {
         console.log('请求已经取消了==>', thrown.message);
      } else {
         // 处理错误
      }
   });
}

function cancelHandert() { 
   source&&source.cancel('取消请求1') //取消请求,参数可选
}

function sendAxios2() { 
   axios.get('https://xxx.com/list').then(function (response) {
      console.log('返回来的数据sendAxios2', response)
   })
}
</script>

 

与前端展示下载进度条;取消下载操作;相似的内容:

前端展示下载进度条;取消下载操作;

展示下载进度条,替换url即可;原文请点击 {title}

Windows 下自动预约申购 i茅台

今天分享一个自动预约抢茅子的工具! 前期准备工作: 1.需安装:.Net6 依赖 (根据操作系统选择 x64 或 x86 版本进行下载。) 安装软件 1.软件下来下来之后,解压并进入软件目录,我们双击启动程序 软件界面比较简洁,首页里有点击展开菜单的快捷方式 首先我们先进入【预约项目】菜单界面,先刷

Python学习之十八_django的学习(二)

# Python学习之十八_django的学习(二) ## 前言 ``` 前面学习了基本的django的使用. 这里想着稍微深入一点学习templates 以及进行级联的路由展示. ``` ## 修改配置文件 ``` 要想使用 templates下面的文件. 需要修改一下项目级别的 settings

vivo 场景下的 H5无障碍适配实践

本文主要介绍了在前端项目中常用的无障碍手势和无障碍属性,并且结合具体的开发案例为开发者真实展示了适配要点,提供组件适配思路。

Linux 环境下制作 deb 软件包

一、简介 前面的笔记中已经展示过了,怎么移植的一个工具境到 ARM 环境中,对于使用 buildroot 和 yocto 的朋友来说,此笔记就没有作用了,因为管理工具包会帮我们把这个工作处理了,就算需要自定义包操作方式也不一样,可以参考上一篇笔记。 而对于 ubuntu 这样的操作系统,虽然可以使用

企业生产环境中的麒麟V10(ARM架构)操作系统部署jdk和redis三主三从交叉版集群

前言:麒麟ARM操作系统是国企和政务机关推行信创化选择率比较高的一款操作系统,然而ARM操作系统非主流的X86系统,除了命令一样,在架构方面差别极大,初次接触多多少少会踩坑,下面我将在公司中部署的实例列举出来,供大家参考,ip和设计机密信息不方便展示,统用虚拟信息代替。 经过多次验证,用了多种通用版

个人网站接入Google Ads的一点心得

前言 前段时间花了一些精力尝试和摸索主题接入 Google Ads 的问题,算是阶段性成功了吧,这次简单分享一下,如果有缘看到这篇文章,应该会有些启发。 1. 展示效果 上篇文章说到,前两天我在我的两款主题中内置了 Google Ads 广告位,并且我自己的网站也启用了,下图是这两天的成果: 确实有

8.邮件发送功能

这里想补充下上个文章,感觉有点不太行。因为每次设计新的表结构就要去更新一下,所以,干脆随着我要做的功能去展示我的表结构设计,最终再把所有的表结构包括sql语句统计出来,感觉这样更新会方便很多~ 这个文章主要是发送邮件的功能。之前提过,我不是一下子把后端全部完成,然后再一下子搞定后端。所以我前后端是要

我开源的H5商城2.0版本发布,强烈推荐

简介 waynboot-mall 是一套全部开源的 H5 商城项目,包含运营后台、H5 商城前台和后端接口三个项目 。实现了一套完整的商城业务,有首页展示、商品分类、商品详情、sku 详情、商品搜索、加入购物车、结算下单、支付宝/微信支付/易支付对接、我的订单列表、商品评论等一系列功能 。

生产环境部署Nginx服务器双机热备部署-keepalived(多种模式教程)

前言:今天演示下生产环境keepalived的部署方式,安装模式有很多,比如说主备模型和双主模型,主备分:抢占模式 和 非抢占模式。这里我会一一展开说具体怎么配置 一、双节点均部署Nginx: 第一步:上传安装包到/usr/local/ 第二步:安装编译依赖(使用普通用户需要家sudo) yum i