el-upload 配合 axios 的 onUploadProgress 方法上传实时进度条展示。

axios 的 config 中封装了 onDownloadProgress(下载进度),onUploadProgress(上传进度),cancelToken(取消请求)的方法。

onUploadProgress 为上传进度方法,在上传文件时被实时调用,返回的 progress.loaded 为已经上传的文件大小,progress.total 是总文件大小。

  <el-upload
            class="upload"
            name="file"
            action="#"
            :auto-upload="false"
            :on-change="handleImport"
            accept=".xls,.xlsx"
          >
            <el-button type="primary" :loading="buttonsLoading" icon="el-icon-upload2" size="mini"
              >导入
            </el-button>
          </el-upload>
          <el-progress v-if="uploadprogress" :percentage="uploadprogressPercentage"></el-progress>
axios({
        method: 'post',
        url,
        headers: { Authorization: 'Bearer ' + getToken() },
        timeout: 60 * 1000,
        data: formData,
        onUploadProgress: progress => {
          if (progress.lengthComputable) {
            this.uploadprogressPercentage = (progress.loaded / progress.total).toFixed(2) * 100  // 进度条百分比
          }
        },
      })

点击导入按钮的时候会调用上传接口,上传文件时候就会触发 onUploadProgress 方法,在这个方法里面计算进度然后赋值给 el-progress 进度条的 percentage 就可以了。

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于el-upload组件的http-request请求,您可以通过使用进度条来显示上传进度。下面是一种实现方式: 1. 首先,在el-upload组件中添加http-request属性,并将其绑定到一个方法上: ```html <el-upload class="upload-demo" :action="uploadUrl" :http-request="uploadFile" :on-success="handleSuccess" :on-error="handleError" > <!-- 其他配置 --> </el-upload> ``` 2. 然后,在methods中定义uploadFile方法,用于实现自定义的http请求逻辑。在该方法中,可以通过axios或其他方式发起请求,并在上传过程中更新进度条的值: ```javascript methods: { uploadFile(file) { // 创建FormData对象,用于传输文件和其他数据 const formData = new FormData(); formData.append('file', file); // 发起请求 return axios.post(this.uploadUrl, formData, { onUploadProgress: (progressEvent) => { const percentCompleted = Math.round( (progressEvent.loaded * 100) / progressEvent.total ); // 更新进度条的值 // 这里假设进度条的ref名称为progressRef this.$refs.progressRef.setCurrentPercent(percentCompleted); }, }); }, // 其他方法 } ``` 3. 最后,您需要在组件中定义一个带有setCurrentPercent方法进度条组件,以便在上传过程中更新进度条的值。您可以使用el-progress组件来实现: ```html <el-progress ref="progressRef" :percentage="0"></el-progress> ``` 通过以上步骤,您就可以在el-upload的http-request请求中显示进度条了。请注意,代码中的一些细节可能需要根据您的具体情况进行调整。希望对您有所帮助!如果还有其他问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值