首页 > 其他分享 >axios实现实时获取文件上传/下载进度

axios实现实时获取文件上传/下载进度

时间:2022-09-22 10:35:31浏览次数:76  
标签:axios formData 实时 link 进度 progressEvent 上传

<template>
  <div>
      <button @click="downLoad">下载</button>

      <p>
          下载进度:{{downLoadProgress}}
      </p>

  </div>
</template>


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


var downLoadProgress=ref(0) //定义下载进度
//下载
var downLoad=function(){
    axios({
        url:"http://localhost:3232/api/download",
        responseType:'blob',
        params:{
            fileName:'Russ - Psycho (Pt. 2).mp4'
        },
         // onDownloadProgress 配置该属性代表允许为下载处理进度事件
            onDownloadProgress: function (progressEvent) {//axios封装的原生获取下载进度的事件,该回调参数progressEvent中包含下载文件的总进度以及当前进度
         if (progressEvent.lengthComputable) {
                        //属性lengthComputable主要表明总共需要完成的工作量和已经完成的工作是否可以被测量
                        //如果lengthComputable为false,就获取不到progressEvent.total和progressEvent.loaded
                         downLoadProgress.value = progressEvent.loaded / progressEvent.total * 100 //实时获取最新下载进度
                    }
    },
    }).then(res=>{
        console.log(res)
        let link = document.createElement("a");
    link.href = URL.createObjectURL(res.data);
    link.download = '午夜鸡铃.mp4';
    document.body.appendChild(link);
    link.click();
    URL.revokeObjectURL(link.href);

    })
}



</script>

 

<template>
  <div>
      <input type="file" @change="upload">上传</button>

      <p>
          上传进度:{{upProgress}}
      </p>

  </div>
</template>


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


var upLoadProgress=ref(0) //定义上传进度
//上传
var upload=function(event){
 
            let file = event.target.files[0] //获取选中的文件
 
            const formData = new FormData() //声明一个formdata对象,用于存储file文件以及其他需要传递给服务器的参数
 
            formData.append('userName', 'admin')
            formData.append('projectId', '735136fcf95a41248cc94127f7963ea8')
            formData.append('file', file)
 
 
            console.log('formData', formData)

    axios({
        url:"http://localhost:3232/api/upload",
            method: 'post',
            headers: {
                Authorization: 'sdfasfsfwrfrwerrrrrrrrrrrfbdddddddddddddd',
                'Content-Type': 'multipart/form-data'
                },
            data: formdata,
            onUploadProgress: function (progressEvent) { //原生获取上传进度的事件
                    if (progressEvent.lengthComputable) {
                        //属性lengthComputable主要表明总共需要完成的工作量和已经完成的工作是否可以被测量
                        //如果lengthComputable为false,就获取不到progressEvent.total和progressEvent.loaded
                      upLoadProgress= progressEvent.loaded / progressEvent.total * 100 //实时获取上传进度
                    }
                }
        
    },
    }).then(res=>{
        console.log(res)


    })
}

 

标签:axios,formData,实时,link,进度,progressEvent,上传
From: https://www.cnblogs.com/saonian/p/16718282.html

相关文章

  • jquery实现文件上传
    <!DOCTYPEhtml><html><head><metacharset="utf-8"><scriptsrc="./lib/jquery.js"></script><title></title></head>......
  • Git将本地仓库上传到github
    这里采用简单的描述,提供两种方式:一、连接本地文件夹和远程仓库1.使用pull——拉取github项目文件(1)进入到自己要上传的文件夹内部,然后gitbashhere(2)输入命令gitini......
  • node.js实现图片上传功能
    1、下载第三方插件multernpminstallmulter--save2、先写一个上传图片的接口在路由文件夹中创建一个fileTest.js文件,代码如下://此文件用于:编写图片上传功能//......
  • flinksql实时数仓开发
    pom文件<groupId>com.ssi</groupId><artifactId>datalake</artifactId><packaging>pom</packaging><version>1.0-SNAPSHOT</version><name>DataLake</nam......
  • Loadrunner上传文件解决办法(大文件)
    跟海量存储相关的项目测试,需要通过LR模拟用户大量上传和下载文件,请求是Rest或Soap,同时还要模拟多种大小尺寸不一的文件通常情况下,都是使用简单的post协议即......
  • el-upload 只执行一次上传就没反应了
    原因是浏览器还保存着我们已经上传的文件,所以应该在上传成功后清除掉这样就可以继续上传了......
  • 阿里云盘文件过大无法拷贝上传处理方法
    注册表路径:计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters如图所示,将FileSizeLimitInBytes修改为8个f ......
  • 使用git上传
    先把远程仓库克隆到本地gitcloneurlcd进入仓库目录cdrepo_path修改增删仓库里的文件后,add、commit、pushgitadd.gitcommit-m'提交信息'gitpusho......
  • FCKEditor增加自定义工具栏暨百度编辑器上传WORD文档并保留源格式自动填充到编辑框
    ​ ueditor粘贴不能粘贴word中的图片是一个很头疼的问题,在我们的业务场景中客户要求必须使用ueditor并且支持word的图片粘贴,因为这个需求头疼了半个月,因为前端方面因为安......
  • 上传了ipa但iTunes Connect没有构建版本问题
    AU上传ipa出现下图红框提示说明成功上传,如果AppStore后台没有出现构建版本,请登录apple账号对应的邮箱查看反馈,特别留意垃圾邮箱,无论成功还是失败,apple都会发邮件一、首......