elementui-upload组件自定义样式上传(upload中常用的属性,但是网络上却找不到教程)(解决bug删除之后再次上传会上传删除的图片)专注后端工程师的前端速成

简介: elementui-upload组件自定义样式上传(upload中常用的属性,但是网络上却找不到教程)(解决bug删除之后再次上传会上传删除的图片)专注后端工程师的前端速成

序章

前几天公司给安排了一个上传组件的任务,但是给用户的上传图片的那个样式,elementui却没有,这时我只能自定义样式了。

遇到了同等bug

       直接看解决标题

upload组件属性有很多在这就不在赘述(官网有,简洁明了)本文只介绍一个属性:file-list官网的表述是上传的文件列表, 例如:

[{name: 'food.jpg', url: 'https://xxx.cdn.com/xxx.jpg'}]

这个时候就会把url里面文件展示出来,但是真到用的时候还真不是那么简单

第一个用法结合show-file-list(是否展示文件列表)

看一下这段代码

<template>
  <el-upload
  class="upload-demo"
  action="https://jsonplaceholder.typicode.com/posts/"
  :on-preview="handlePreview"
  :on-remove="handleRemove"
  :before-remove="beforeRemove"
  multiple
  :limit="3"
  :on-exceed="handleExceed"
  :file-list="fileList">
  <el-button size="small" type="primary">点击上传</el-button>
  <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>
</template>
<script>
  export default {
    data() {
      return {
        fileList: [{name: 'food.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}, {name: 'food2.jpeg', url: 'https://fuss10.elemecdn.com/3/63/4e7f3a15429bfda99bce42a18cdd1jpeg.jpeg?imageMogr2/thumbnail/360x360/format/webp/quality/100'}]
      };
    },
    methods: {
      handleRemove(file, fileList) {
        console.log(file, fileList);
      },
      handlePreview(file) {
        console.log(file);
      },
      handleExceed(files, fileList) {
        this.$message.warning(`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
      },
      beforeRemove(file, fileList) {
        return this.$confirm(`确定移除 ${ file.name }?`);
      }
    }
  }
</script>

这个show-file-list默认为真也就是展示文件列表(属性file-list中包含的文件)

效果图:

如果我们把show-file-list设为false;这个红框内的内容将消失

用法二

如果我的样式并不写在uplaod内,这个时候我们就无法使用elementui提供给我们删除文件的操作。这时候bug就来了。

upload代码

<el-upload class="img-upload" 
  :action="imgUploadUrl"
    accept=".PNG" 
  :on-success="(res, file, fileList) => {UploadSuccess(fileList, item.id);}
    :show-file-list="false" 
  :multiple="true" 
>
  <el-button type="primary" size="mini" class="img-upload-btn">上传</el-button>
</el-upload>
<-- 样式代码 -->
<div>
<button @click="和后端沟通的删除操作">删除</button>
<div>
我自定义的样式展示(像轮播图等等) ,我这里就直接用一个img表示
<img :src="后端返回的图片地址">
<img>
<img>
</div>
</div>

<button>上传按钮写在upload组件内要不然上传也要自己写;

这个时候你点击删除按钮来删除上传的图片,展示图片确实是删除了某一个img但是当你再次点击的时候会把你以前上传的图片都重新上传一遍;

例如

你上传了1 2 3

然后删除了2

当你点再次击上传的时候,上传4

但是效果确实上传了1 2 3 4

导致展示的图片为

1 3 1 2 3 4

这个就是因为你的删除操作并过没有操作到file-list(因为没有写在upload内主要是删除按钮的样式也是自定义的,不能写在upload组件内)

还记的file-list的定义吗---上传的文件列表所以file-list会有1 2 3 4这个几个图片,并且上传的时候会把file-list的东西都上传一遍

解决

大家应该都能想到解决应该就是在自己搞的删除按钮去操作file-list但是完全没必要

看一下我的思路,那就是file-list中保存了我上次(甚至上上次上传的文件)这些保存是完全没有必要的,我们只需要我本次上传的文件,所以我们直接在本次上传完之后去清空file-list = []即可

代码

<el-upload class="img-upload" 
  :action="imgUploadUrl"
    accept=".PNG" 
  :on-success="(res, file, fileList) => {UploadSuccess(fileList, item.id);}
    :show-file-list="false" 
  :multiple="true" 
  :file-list="fileList"> <-- 一定要写上这个属性 -->
  <el-button type="primary" size="mini" class="img-upload-btn">上传</el-button>
</el-upload>
<-- 样式代码 -->
<div>
<button @click="和后端沟通的删除操作">删除</button>
<div>
我自定义的样式展示(像轮播图等等) ,我这里就直接用一个img表示
<img :src="后端返回的图片地址">
<img>
<img>
</div>
</div>
//在data中注册
data() {
    return {
      fileList: [],
    }
}
methods: {
//上传成功的方法
    UploadSuccess(fileList,id){
//写在最后面
        fileList = []清空
    }
}


目录
相关文章
|
7月前
|
安全 网络协议 算法
Nmap网络扫描工具详细使用教程
Nmap 是一款强大的网络发现与安全审计工具,具备主机发现、端口扫描、服务识别、操作系统检测及脚本扩展等功能。它支持多种扫描技术,如 SYN 扫描、ARP 扫描和全端口扫描,并可通过内置脚本(NSE)进行漏洞检测与服务深度枚举。Nmap 还提供防火墙规避与流量伪装能力,适用于网络管理、渗透测试和安全研究。
1105 1
|
9月前
|
JSON 监控 API
在线网络PING接口检测服务器连通状态免费API教程
接口盒子提供免费PING检测API,可测试域名或IP的连通性与响应速度,支持指定地域节点,适用于服务器运维和网络监控。
1478 0
|
Dart 前端开发
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
515 75
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
数据采集 存储 监控
Python 原生爬虫教程:网络爬虫的基本概念和认知
网络爬虫是一种自动抓取互联网信息的程序,广泛应用于搜索引擎、数据采集、新闻聚合和价格监控等领域。其工作流程包括 URL 调度、HTTP 请求、页面下载、解析、数据存储及新 URL 发现。Python 因其丰富的库(如 requests、BeautifulSoup、Scrapy)和简洁语法成为爬虫开发的首选语言。然而,在使用爬虫时需注意法律与道德问题,例如遵守 robots.txt 规则、控制请求频率以及合法使用数据,以确保爬虫技术健康有序发展。
1527 31
|
域名解析 API PHP
VM虚拟机全版本网盘+免费本地网络穿透端口映射实时同步动态家庭IP教程
本文介绍了如何通过网络穿透技术让公网直接访问家庭电脑,充分发挥本地硬件性能。相比第三方服务受限于转发带宽,此方法利用自家宽带实现更高效率。文章详细讲解了端口映射教程,包括不同网络环境(仅光猫、光猫+路由器)下的设置步骤,并提供实时同步动态IP的两种方案:自建服务器或使用三方API接口。最后附上VM虚拟机全版本下载链接,便于用户在穿透后将服务运行于虚拟环境中,提升安全性与适用性。
915 7
|
Dart 前端开发 容器
【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
512 18
【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
524 20
|
网络协议 安全 测试技术
Nping工具详解:网络工程师的瑞士军刀
### Nping工具详解:网络工程师的瑞士军刀 Nping是Nmap项目的一部分,支持TCP、UDP、ICMP和ARP等多种协议,用于生成和分析网络数据包。它提供灵活的命令行界面,适用于网络探测、安全测试和故障排除。本文介绍Nping的基础与高级用法,包括发送不同类型的网络请求、自定义TCP标志位、路由跟踪等,并通过实战案例展示其应用。掌握Nping有助于更好地理解和管理网络环境。 (239字符)
1227 9
|
前端开发 小程序 Java
uniapp-网络数据请求全教程
这篇文档介绍了如何在uni-app项目中使用第三方包发起网络请求
1026 3
|
网络协议 网络架构
网络工程师必知:什么是OSPF多区域?如何配置?
网络工程师必知:什么是OSPF多区域?如何配置?
1070 2
网络工程师必知:什么是OSPF多区域?如何配置?

热门文章

最新文章

下一篇
开通oss服务