el-upload不显示进度条

在这里插入图片描述
原因:我并没有用el-upload上面的action设置上传url,也没有用他自带的方法上传
这里我使用的是通过自定义接口手动上传,即点击外部按钮,将文件转换后调用接口将文件传参,拿到存储后转换回来的文件url,直接调用接口上传,没有用到action,以及upload上的submit方法等

自定义接口上传文件

<el-upload :auto-upload="false" accept=".mp4,.avi,.mp3,.png,.jpg,.jpeg,.gif,.bmp,.webp,.svg" dragv-model:file-list="fileList" :on-preview="handlePictureCardPreview" ref="upload" :on-progress="handleProgress"><div class="el-upload__text">拖拽文件到这里 或者 <em>点击选择文件</em></div>
</el-upload>
<el-button @click='sureUpload'>上传</el-button>
methods:{sureUpload(){for (const file of this.fileList) {if (file.status !== 'ready') {continue}let res = await this.uploadEleFile(file)if (res) {file.url = res.linkfile.name=res.originalName}}},uploadEleFile(file){const formData = new FormData();formData.append('file', file.raw);return new Promise(async (resolve,reject)=>{let res;try {res = await axios.post(baseUrl + '/form/material/upload', formData, {headers: {'Authorization': userStore.token,// 不要手动设置 Content-Type,Axios 会自动处理//'Content-Type': 'multipart/form-data'},// 监听上传进度onUploadProgress: (progressEvent) => {if (progressEvent.progress) {const percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total);// 更新进度file.percentage = percentCompleted;// console.log(`Upload progress: ${percentCompleted}%`);}},});if(res.status===200){file.status = 'success'resolve(res.data.data)}} catch (error) {file.status = 'fail'this.$message.error('上传失败,请重新选择素材进行上传')reject(error)}})}
}

可以上传文件,但会发现,el-upload自带的进度条不显示了
这里我尝试了很多方法都不行,例如:监听上传进度更新进度时触发up-load的钩子函数等,都不能显示进度条
在这里插入图片描述
因此,我只能在插槽中自定义文件列表来显示进度条

<el-upload :auto-upload="false" accept=".mp4,.avi,.mp3,.png,.jpg,.jpeg,.gif,.bmp,.webp,.svg" drag 
v-model:file-list="fileList" :on-preview="handlePictureCardPreview" ref="upload" :on-progress="handleProgress"><template #default><div class="el-upload__text">拖拽文件到这里 或者 <em>点击选择文件</em></div></template>//自定义文件列表<template #file="{file}"><div class="file-list-item cursor-pointer"><span>{{ file.name }}</span><el-progress class="mt-2" :stroke-width="3" color="#409eff" v-if="file.status === 'uploading'" :percentage="file.percentage" /></div></template>
</el-upload>
<el-button @click='sureUpload'>上传</el-button>

这时候进度条了,但有一个问题是,我的file文件对象中的status没有uploading,未上传的文件和正在上传的文件status都是’ready’,如果没有这种情况的朋友可忽略这里

<el-progress class="mt-2" :stroke-width="3" color="#409eff" v-if="file.status === 'ready'" :percentage="file.percentage" />
//设置为ready就可以显示出来进度条了,但还没有上传时也会显示出来,这里没办法又加上了限制条件
<el-progress class="mt-2" :stroke-width="3" color="#409eff" v-if="file.status === 'ready' && file.percentage !== 0" :percentage="file.percentage" />
//加上限制条件后未上传时不显示进度条了,但也会有问题,如果上传文件较小,监听进度时,进度条直接就为100了,由于进度条100后就不显示,因此页面上看不到有显示进度条的变化,即一直不显示进度条

在这里插入图片描述
显示进度条后又有了新的问题
通过插槽实现自定义进度条显示后,覆盖了默认的el-upload文件渲染,因此,文件后的状态以及删除文件的功能没有了,因此自定义文件列表时,除了进度条,还要自定义一下上传状态(例如:成功/失败)和删除文件
最终结果
//结构

<template #file="{file}"><div class="file-list-item cursor-pointer"><!-- 点击预览 --><span @click="handlePictureCardPreview(file)" class="flex-1">{{ file.name }}</span><!-- 显示进度条 --><el-progress class="mt-2" :stroke-width="3" color="#409eff" v-if="file.status === 'ready' && file.percentage !== 0" :percentage="file.percentage" /><!-- 显示文件上传状态 --><span v-if="file.status === 'success'" style="color: green;"><el-icon><CircleCheck /></el-icon></span><span v-if="file.status === 'fail'" style="color: red;"><el-icon><CircleClose /></el-icon></span><!-- 删除文件 --><el-button class="w-[50px] h-[32px] border-[0] text-[20px] delete-btn" icon="close" @click="handleRemove(file)" /></div></template>

//js

methods:{
handleRemove(file){// 删除文件的方法const index = this.fileList.indexOf(file);if (index !== -1) {this.fileList.splice(index, 1); // 从 fileList 中删除文件}},
},
handlePictureCardPreview(file) {let urlif (file.status === 'success') {url = file.url} else {url = URL.createObjectURL(file.raw)}//判断url是否图片 png jpg jpeg giflet reg = /\.(png|jpg|jpeg|gif|svg|ico)$/if (reg.test(url) || file.raw?.type.includes('image')) {this.dialogImageUrl = urlthis.dialogVisible = truereturn}window.open(url, '_blank');},

//css样式

<style scoped lang="scss">
.file-list-item {display: flex;justify-content: space-between;align-items: center;margin-bottom: 10px;
}
/* 隐藏删除按钮,只有鼠标悬浮时显示 */
.delete-btn {display: none;position: absolute;right: 0;
}/* 鼠标悬浮时,显示删除按钮 */
.file-list-item:hover .delete-btn {display: inline-block;
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1550097.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

如何处理各行业的DDOS问题

分布式拒绝服务&#xff08;Distributed Denial of Service, DDoS&#xff09;攻击是网络安全领域最为常见且危害性极大的攻击方式之一。通过控制大量计算机、物联网终端或网络僵尸&#xff0c;攻击者能够向目标网站或服务器发送大量请求&#xff0c;从而耗尽其资源&#xff0c…

【docker】如何保存镜像以及分享社区

一、前言 在上篇博客中&#xff0c;我们已经下载了一个nginx的镜像&#xff0c;并且修改了它的内容为“111222”&#xff0c;命名为mynginx&#xff0c;现在我们就要把这个mynginx保存下来&#xff0c;并且分享但我们的docker_hub社区中&#xff01; 二、保存镜像 1、常用命名…

Vision Mamba UNet:一种新型医学图像分割网络

人工智能咨询培训老师叶梓 转载标明出处 在医学图像分割的研究中&#xff0c;卷积神经网络&#xff08;CNN&#xff09;与变换器&#xff08;Transformer&#xff09;模型各有其优势和局限。CNN由于其有限的局部感受野&#xff0c;在捕获长距离信息时能力较弱&#xff1b;而尽…

深入理解 Nuxt.js 中的 app:data:refresh 钩子

title: 深入理解 Nuxt.js 中的 app:data:refresh 钩子 date: 2024/9/29 updated: 2024/9/29 author: cmdragon excerpt: 摘要:本文详细介绍了 Nuxt.js框架中的app:data:refresh钩子,包括其定义、用途、使用方法及实际应用案例。该钩子用于在数据刷新时执行额外处理,支持…

这几个高含金量证书,网工真的该拿

在这个技术日新月异的行业中&#xff0c;不断学习新技能和知识是保持竞争力的关键。 而证书&#xff0c;作为一种专业能力的认证&#xff0c;不仅能够证明你的技术实力&#xff0c;还能为你打开更多的职业发展大门。 在众多的IT认证中&#xff0c;有些证书因其高含金量而备受推…

推动国产化软件飞跃:三品软件与麒麟完成兼容性验证 共筑数字强国梦

近日&#xff0c;三品软件产品全生命周期管理系统(PLM)V1.0与麒麟软件成功完成了兼容性适配认证&#xff0c;这标志着我司在推进国产化创新发展进程中取得实质性的进展。 三品软件的PLMV1.0是一款全面的产品生命周期管理平台软件产品&#xff0c;集成设计、研发、生产管理等环…

Python编码系列—Python状态模式:轻松管理对象状态的变化

&#x1f31f;&#x1f31f; 欢迎来到我的技术小筑&#xff0c;一个专为技术探索者打造的交流空间。在这里&#xff0c;我们不仅分享代码的智慧&#xff0c;还探讨技术的深度与广度。无论您是资深开发者还是技术新手&#xff0c;这里都有一片属于您的天空。让我们在知识的海洋中…

帮儿女带孩子的老人,都有以下几种共性

在现代社会中&#xff0c;随着生活节奏的加快&#xff0c;许多年轻父母需要在繁忙的工作中平衡家庭和事业&#xff0c;老人们自然成为了带孙辈的重要力量。 放眼望去&#xff0c;不少家庭的老人主动承担起了带孙子的责任&#xff0c;为子女分担了育儿的重担。 随着时代的变化…

以太网交换安全:端口安全

一、端口安全介绍 端口安全是一种网络设备防护措施&#xff0c;通过将接口学习到的动态MAC地址转换为安全MAC地址&#xff08;包括安全动态MAC和Sticky MAC&#xff09;&#xff0c;阻止除安全MAC和静态MAC之外的主机通过本接口和设备通信&#xff0c;从而增强设备的安全性。以…

YOLOv5改进:Shuffle Attention注意力机制【注意力系列篇】(附详细的修改步骤,以及代码)

如果实验环境尚未搭建成功&#xff0c;可以参考这篇文章 ->【YOLOv5超详细环境搭建以及模型训练&#xff08;GPU版本&#xff09;】 文章链接为&#xff1a;http://t.csdnimg.cn/Ke0bb ---------------------------------------------------------------------------​ 1…

C++第五讲(1):STL--string--各个函数的使用方法

C第五讲&#xff1a;STL--string 1.STL简介2.string类2.1string类的常见构造2.1.1重点1&#xff1a; string&#xff08;&#xff09;2.1.2重点2&#xff1a;string(const string& str)2.1.3使用3&#xff1a;string(const string& str, size_t pos, size_t len npos)…

svg图片怎么转成高清png?五款软件一键解决!

在这个视觉为王的时代&#xff0c;无论是设计师还是内容创作者&#xff0c;都渴望拥有清晰、高质量的图像来提升作品的吸引力。而SVG&#xff08;可缩放矢量图形&#xff09;以其无损放大、文件小巧的优势&#xff0c;在图标、图形设计中备受欢迎。但有时候&#xff0c;我们也需…

空间随心而变:气膜场馆的无限可能—轻空间

在气膜场馆内&#xff0c;空间的定义绝不仅限于传统的固定形式。无论是运动场、会议厅&#xff0c;还是展览馆&#xff0c;气膜场馆都能灵活应对各种需求&#xff0c;随时变换使用功能。这种灵活的空间配置为各类活动提供了更多可能性&#xff0c;让每个角落都能充分发挥其作用…

SpringMVC源码-SpringMVC源码请求执行流程及重点方法doDispatch讲解

一、开始请求 在浏览器访问http://localhost:8080/spring_mymvc/userlist这个接口&#xff0c;是个get请求。 FrameworkServlet类的service方法会被请求到: 调用路径如下&#xff1a; service:945, FrameworkServlet (org.springframework.web.servlet) service:764, HttpSer…

视频美颜SDK与直播美颜工具API的架构设计与实现

视频美颜SDK的出现&#xff0c;不仅大大提升了用户体验&#xff0c;还为开发者提供了实现实时美颜功能的技术支持。接下来&#xff0c;小编将与大家深入探讨视频美颜SDK与直播美颜工具API的架构设计与实现方案&#xff0c;帮助开发者更好地理解这一技术的核心原理。 一、视频美…

完美解决Idea中如何对Java Agent进行断点调试的方式

1、前言 在日常开发中&#xff0c;可能会存在写一个Java Agent到项目中去&#xff0c;Agent的实现可能是复杂的&#xff0c;有时候会出现attach到进程上后&#xff0c;发现没效果&#xff0c;也不知道怎么调试&#xff0c;只能通过打日志的方式实现&#xff0c;效率实在是太低…

开放式蓝牙耳机哪个品牌更靠谱?5款高性价比开放式耳机推荐

谈到开放式蓝牙耳机哪个品牌更靠谱&#xff0c;市场上有许多优秀的选择。以前也经常使用入耳式耳机&#xff0c;但总是会感觉耳机插在耳朵里不舒服&#xff0c;戴久了耳朵很疼&#xff0c;跑步的时候还总掉。还有在过马路的时候接电话、听音乐&#xff0c;几乎感知不到周围环境…

CHARLS数据库系列教程(4)--多模型效应分析、Per SD、P for trend及限制立方样条图绘制

CHARLS 是一项具备中国大陆 45 岁及以上人群代表性的追踪调查&#xff0c;旨在建设一个高质量的公共微观数据库&#xff0c;采集的信息涵盖社会经济状况和健康状况等多维度的信息&#xff0c;以满足老龄科学研究的需要。 为利用国际上最佳的数据采集方式&#xff0c;并确保研究…

TiDB 性能测试的几个优化点

作者&#xff1a; 数据源的TiDB学习之路 原文来源&#xff1a; https://tidb.net/blog/513a4eef 背景 前段时间参与了一个 TiDB 的性能测试&#xff0c;具体是在三台海光服务器&#xff08;512G内存、128 core 分8个NUMA、4块3.5T SSD&#xff09;搭建一个混合部署的 TiDB …

Arthas tt(方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测)

文章目录 二、命令列表2.3 monitor/watch/trace/stack/tt 相关2.3.4 tt&#xff08;方法执行数据的时空隧道&#xff0c;记录下指定方法每次调用的入参和返回信息&#xff0c;并能对这些不同的时间下调用进行观测&#xff09;举例1&#xff1a;记录调用举例2&#xff1a;显示所…