axios 监听上传进度 实现真实进度条

项目中 有一个上传文件的需求 上传格式是formData。 最开始是使用假的进度条, 后面发现 上传的文件 有可能会有几百M,这时假的进度条就失去作用了。

Api接口
 
export function manuaImportData(data, config) {
  return service({
    url: `/bill/receive/import`,
    method: 'post',
    timeout: Infinity,
    // 上传时间 如果文件过大 超时时间设置为无穷大
    ...config,
    data
  })
}
实现页面
 
          // 我的进度条是一个弹窗 上传时就打开
          this.dialogVisible = true
          this.progressFlag = true // 这个是进度条的类名判断
          const data = this.formData.file
          const config = {
            onUploadProgress: progressEvent => {
              // progressEvent.loaded  ==> 已上传的大小
              //  progressEvent.total ==>  文件大小
              const percentCompleted = Math.round((progressEvent.loaded * 100) /                     
               progressEvent.total)
            // 进度条的数字
              this.percent = percentCompleted
            }
          }
          manuaImportData(data, config).then(res => {
            if (res.code === 200) {
                this.percent = 100
                this.dialogVisible = false
                this.progressFlag = false
                this.percent = 0
            }
          }).catch(err => {
            console.log(err)
            this.percent = 0
            this.progressFlag = false
            this.dialogVisible = false
          })

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值