element中upload上传组件自带的进度条消失问题

赶时间的可以直接拉到最后

先介绍下背景:本人是搞Java后端的(没怎么系统学过前端,但是勉强了解一点),安排了个上传文件时显示进度条的任务给我。项目是vue2的

接下来我就开始搜索,刚开始还没意识到这个看似简单的问题能花我一下午的时间。

el-upload上传文件时使用element自带进度条_element upload上传进度_NJR10byh_migu的博客-CSDN博客

了解到的基本上都是这样说可以解决,但是因为项目请求接口用的时封装好的api,所以我参考了之后写法如下(这里就只贴关键部分了,其他地方大同小异):

const res = await uploadResource(formData, {
        onUploadProgress: progressEvent => {
          let percent =((progressEvent.loaded / progressEvent.total) * 100) | 0;
          params.onProgress({ percent: percent });
        }
      })

改了之后,自信保存,然后自测,发现没起作用,于是我又接着搜索,找到了这个:

文件上传el-upload,使用自定义:http-request,不显示默认的进度条 - 吃的快不吐骨头 - 博客园 (cnblogs.com)

改了之后,自信保存,然后自测,发现没起作用,于是我又接着搜索,尝试了其他自定义进度条的方式,还是不能动态显示进度条数据,然后又是搜索

填坑日志-elementUI el-upload上传组件没有进度条_weixin_33937778的博客-CSDN博客

说是项目中使用了的mock的原因,但是我全局搜索了项目,确实是没有用到mock。

最后实在没辙了,干脆死马当活马医,把封装好的api换成最原始的axios,它居然可以了!!

this.$axios({
        url: process.env.XXXX + '/xxx/upload',
        data: formData,
        method: "post",
        headers: {
          'Content-Type': 'multipart/form-data'
        },
        onUploadProgress: event => {
          params.file.percent = event.loaded / event.total * 100
          params.onProgress(params.file)
        },
      })

总结:如果项目中使用的时封装好了api,可以尝试换成axios或者request。

这是我的第一篇博客,如果有写的不对的地方,还请指正。另外,问题虽然解决了,但是却还是不太明白,我感觉很有可能是我的写法有问题,想问下有大佬知道原因吗

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Element UI 的 el-upload 组件也提供了多个插槽来自定义上传组件的样式,其包括进度条的样式。你可以通过以下步骤修改 el-upload进度条样式: 1. 在 el-upload 组件使用 slot="progress" 来自定义进度条的样式,例如: ```html <el-upload class="upload-demo" action="https://jsonplaceholder.typicode.com/posts/" :on-progress="handleProgress" :on-success="handleSuccess" :on-error="handleError" :auto-upload="false" > <el-button slot="trigger" size="small" type="primary">选取文件</el-button> <el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上传到服务器</el-button> <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> <div slot="progress" class="el-progress"> <div class="el-progress-bar" :style="{width: uploadPercent + '%'}"></div> </div> </el-upload> ``` 2. 在样式表定义进度条的样式,例如: ```css .el-progress { height: 10px; margin-top: 10px; } .el-progress-bar { height: 100%; background-color: #409eff; transition: width 0.5s ease-in-out; } ``` 在上述样式,我们将进度条的高度设置为 10px,进度条的背景颜色设置为 #409eff,进度条的宽度变化设置为 0.5s 的过渡效果。 注意:以上代码仅为示例,实际使用时需要根据项目需求进行修改。同时,还需要根据你的上传进度百分比计算出 el-progress-bar 的宽度,并将其赋值给 uploadPercent。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值