制作文件上传进度条

先看原生js怎么做

关键点: 监听请求的upload.onprogress事件

  // 发请求
  const ajax = (url: string, data: FormData) => {
    return new Promise((resolve, reject) => {
      const request = new XMLHttpRequest();
      request.open('POST', url);
      request.onreadystatechange = () => {
        if (document.readyState === 'complete' && request.status === 200) {
          resolve(request.response);
        } else {
          reject(new Error('上传失败'));
        }
      };
      request.upload.onprogress = (e: ProgressEvent) => {   //这里可以获取进度条的信息
        console.log(`${e.loaded/ e.total*100 ||0}%`)
      };
      request.send(data);
    });
  };

axios做进度条

要点是发送请求是配置onUploadProgress:

async uploadVideo () {
  const {uploadFile} = this
  if(uploadFile){
    let param = new FormData() //创建form对象,私有,无法直接获取,只能通过get来查看其中的元素
    param.append('file',uploadFile)
    let config = {
      headers:{
        'Content-Type':'multipart/form-data',
      },
      transformRequest: [function (data) {
        return data
      }],
      onUploadProgress: progressEvent => {
        let persent = (progressEvent.loaded / progressEvent.total * 100 | 0)		//上传进度百分比
        console.log(persent)
      },
    }
    axios.post('http://xxxxxxxx/video/upload',param,config)	//地址写你们自己的接口
      .then(response=>{
        var result = response.data
        if(result.status == 0){
          console.log(result)
        }else{
          this.$message({
            message: '上传失败',
            type: 'error',
            duration:'1000'
          });
        }
      }).catch(err => {
        console.log(err)
      })
    }
},

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值