vue+element之解决upload组件上传文件失败后仍显示在列表上、自动上传、过滤、findIndex、splice、filter

news2024/11/24 8:31:46

MENU

  • 前言
  • 错误案例(没有用)
  • 正确方法
  • 结束语


前言

el-upload上传失败后,文件仍显示在列表上。
upload.png
这个pdf文件上传失败,仍显示在列表,给人错觉是上传成功,所以要把它去掉。


在element中,file-listv-model:file-list是用于上传文件组件的两个不同属性。
1、file-list属性用于显示已上传文件列表,可以通过设置file-list属性为一个数组。数组中包含已上传文件的信息,例如文件名、大小等,element会根据这个数组来展示已上传文件列表。
2、v-model:file-list用于绑定已上传文件的双向绑定属性,通过将v-model:file-list绑定到一个变量上,可以实现上传文件的双向绑定,即当用户上传文件时,绑定的变量会更新,反之亦然。属性通常用于需要在上传文件后对文件进行处理或者在上传前对文件进行验证的场景。
file-list用于显示已上传文件列表
v-model:file-list用于实现上传文件的双向绑定。


错误案例(没有用)

前言

这是网上其他博主写的博客,并没有解决问题,还报错了。


html

<el-upload
	class="upload-file padding"
	ref="uploadFile"
	multiple
	accept="image/jpeg,image/png,image/gif,application/pdf"
	:http-request="uploadFile"
	:on-change="onChange"
	:before-upload="beforeuploadFile"
	action="123"
	:disabled="!isDisabled"
	:on-remove="handleRemove"
	:file-list="ruleForm.commission">
	<el-button type="primary" size="mini" :loading="uploadLoding" :disabled="!isDisabled">上传</el-button>
	<div slot="tip" class="el-upload__tip" style="line-height: 1; margin: 0 0 10px;">注:只能上传图片或pdf文件</div>
</el-upload>

JavaScript

handleRemove (file, fileList) {
    this.ruleForm.commission = fileList
    // 用于校验
    // this.ruleForm.fileName = ''
},
onChange (file, fileList) {
  this.files = fileList
},
// 上传
uploadFile (fileObj) {
	let file = fileObj.file
	uploadImageInfo({ file: file, width: 165, height: 245, caseId: this.caseId, taskId: this.taskId }).then(res => {
          if (res.success && res.data) {
          	// 后端接口返回后逻辑-todo
              const obj = {
              	  // 文件名带后缀
                  name: '文件名.pdf',
                  // 文件路径
                  url: data.path,
              }
              // 显示用的
              this.ruleForm.commission.push(obj)
          }
      }).catch(err => {
          console.log(err)
          // 关键作用代码,去除文件列表失败文件
          let uid = file.uid
          // 关键作用代码,去除文件列表失败文件(uploadFiles为el-upload中的ref值)
          let idx = this.$refs.uploadFile.uploadFiles.findIndex(item => item.uid === uid)

		  // 关键作用代码,去除文件列表失败文件
          this.$refs.uploadFile.uploadFiles.splice(idx, 1)
      })
}

正确方法

html

<el-upload v-model:file-list="form.fileList" accept=".doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf"
  action="/api/upload/file" :show-file-list="true" :on-progress="uploadProgress"
  :on-preview="fileViewV" :on-success="successFileFolder" :on-error="uploadError">
  <el-button type="success" size="small">上传</el-button>
</el-upload>

JavaScript

fileViewV(file) {
  window.open(file.response.response.previewPath, '_blank');
},
successFileFolder(re, file, fileList) {
  fileList = fileList.filter(item => item.response.code !== 500);
  this.form.trainData = fileList;
  if (re.code === 500) {
    this.$message.error(re.message);
  } else {
    this.$message.success(re.message);
  }
  this.loading.close();
},
uploadProgress() {
  this.loading = this.$loading({
    lock: true,
    text: '文件上传中…',
    spinner: 'el-icon-loading',
    background: 'rgba(0, 0, 0, 0.5)'
  });
},
uploadError() {
  this.loading.close();
  this.$message.error('文件上传失败,请检查文件大小或文件格式');
}

结束语

翻了官方文档,没有看到处理方法,之所以这么处理,是因为显示的fileList列表并不是赋值数据需要显示的列表。
正好遇到此问题,整理出来解决方法,希望能帮到需要的人。

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

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

相关文章

Codigger数据篇(中):数据可控性的灵活配置

在数据服务领域中&#xff0c;数据可控性无疑是至关重要的一环。数据可控性不仅关乎数据的安全性和隐私性&#xff0c;更直接影响到数据价值的实现。Codigger&#xff0c;在其数据可控性方面的灵活配置&#xff0c;为用户提供了更加便捷、高效的数据管理体验。 一、自主选择数…

拌合楼管理系统(十八)如何从一个winForm中的事件修改另外一个Form的控件的值

前言&#xff1a; 上篇讲述了如何手工调用海康的车牌识别摄像头进行拍照和识别车牌&#xff0c;我车牌识别的程序在应用的一个窗体&#xff0c;需要去更新另外一个窗体里面的lable中的内容为识别的车牌信息&#xff0c;同时还要写入到另外窗体的datagridview中。 一、实现效果 …

以23年电赛吉林赛区为例,如何避免冤假错案?再谈无人机赛题中不让使用机载计算机的问题!!!

有同学反馈吉林赛区在无人机赛题中使用树莓派后不被允许测评&#xff0c;由于缺少同省样本支撑&#xff0c;并且吉林省G题无人机获得国奖仅有一组&#xff0c;所以仅根据特定情况做回复&#xff0c;不代表任何组委会立场&#xff0c;因为按照该用户表述&#xff0c;自己没有任何…

【HTTP协议】了解http需要学习哪些内容

HTTP&#xff08;Hypertext Transfer Protocol&#xff09;是超文本传输协议&#xff0c;互联网上应用最广泛的一种协议&#xff0c;它负责在客户端和服务器之间传输数据。本文将从HTTP协议的基本原理、请求-响应模型、常见特性以及应用场景等方面进行总结。 1. HTTP基本原理 …

【云原生】Docker 实践(一):在 Docker 中部署第一个应用

Docker 实践&#xff08;一&#xff09;&#xff1a;在 Docker 中部署第一个应用 1.使用 YUM 方式安装 Docker2.验证 Docker 环境3.在 Docker 中部署第一个应用3.1 小插曲&#xff1a;docker pull 报 missing signature key 错误3.2 重新安装 Nginx 1.使用 YUM 方式安装 Docker…

极目楚天 共襄星汉 | 同元软控受邀参加2024年中国航天大会

4月23日至26日&#xff0c;2024 年中国航天大会&#xff08;CSC2024&#xff09;在湖北省武汉市成功举办。大会由中国宇航学会和中国航天基金会联合主办&#xff0c;以“极目楚天 共襄星汉”为主题&#xff0c;汇聚国内外航天领域知名专家、学者、管理者&#xff0c;深入探讨航…

数字IC后端先进工艺设计实现之TSMC 12nm 6Track工艺数字IC后端实现重点难点盘点

大家知道咱们社区近期TSMC 12nm ARM Cortexa-A72(1P9M 6Track Metal Stack)已经开班。这里小编要强调一点:不要认为跑了先进工艺的项目就会很有竞争力&#xff01;如果你仅仅是跑个先进工艺的flow&#xff0c;不懂先进工艺在数字IC后端实现上的不同点&#xff0c;为何有这样的不…

2024年十款开源测试开发工具推荐(自动化、性能、混沌测试、造数据、流量复制)

今天为大家奉献一篇测试开发工具集锦干货。在本篇文章中&#xff0c;将给大家推荐10款日常工作中经常用到的测试开发工具神器&#xff0c;涵盖了自动化测试、性能压测、流量复制、混沌测试、造数据等。 1、AutoMeter-API 自动化测试平台 AutoMeter 是一款针对分布式服务&…

MT3420B 航天民芯代理 1.5MHZ 2A 同步降压转换器 6V输入

深圳市润泽芯电子有限公司为航天民芯一级代理技术支持 欢迎试样~Tel&#xff1a;18028786817 简介 MT3420B是一个1.5MHz恒定频率&#xff0c;电流模式降压转换器。它是理想的便携式设备&#xff0c;需要非常大电流的单电池锂离子电池&#xff0c;同时在峰值负载条件下仍达到超…

HR是“打手”?

在刚过去的上海公开课上&#xff0c;有一位学员在课间问了我个问题&#xff0c;他说“感觉HR更像是个打手&#xff0c;不知李老师怎么看&#xff1f;”基于我在现场与他交流的内容&#xff0c;我总结成这篇文章吧。 这位学员的问题&#xff0c;表他了他对HR这个岗位的负面感受…

机器学习每周挑战——客户流失数据预测

# 字段 说明 # RowNumber 每行数据的唯一标识符。 # CustomerId 客户的唯一标识符。 # Surname 客户的姓氏&#xff08;出于隐私考虑&#xff0c;请对这些数据进行匿名处理&#xff09;。 # CreditScore 客户在数据收集时的信用评分。 # Geography 客户所在的国…

文件分块+断点续传 实现大文件上传全栈解决方案(前端+nodejs)

1. 文件分块 将大文件切分成较小的片段&#xff08;通常称为分片或块&#xff09;&#xff0c;然后逐个上传这些分片。这种方法可以提高上传的稳定性&#xff0c;因为如果某个分片上传失败&#xff0c;只需要重新上传该分片而不需要重新上传整个文件。同时&#xff0c;分片上传…

React的路由

1. 什么是前端路由 一个路径 path 对应一个组件 component 当我们在浏览器中访问一个 path 的时候&#xff0c;path 对应的组件会在页面中进行渲染 2. 创建路由开发环境 # 使用CRA创建项目 npm create-react-app react-router-pro# 安装最新的ReactRouter包 npm i react-ro…

AI图书推荐:将 ChatGPT和Excel融合倍增工作效率

《将 ChatGPT和Excel融合倍增工作效率》&#xff08; Hands-on ChatGPT in Excel. Enhance Your Excel Workbooks&#xff09;由Mitja Martini撰写&#xff0c;旨在教授读者如何将ChatGPT与Excel结合使用&#xff0c;以提升工作效率和创造AI增强的Excel工具。它还提供了Excel中…

「中标喜报」合众致达中标深圳安居乐寓智能水电表供货及安装项目

2024年4月25日&#xff0c;深圳合众致达科技有限公司(以下简称“我司”)成功中标安居乐寓2023盐田区保障性租赁住房改造提升项目的水电表供货与安装工程(二次)项目&#xff0c;此次中标标志着我司在城中村公寓出租房能源计费领域的专业实力及市场竞争力得到了进一步的认可。 我…

uniapp视频播放器(h5+app)

关于uniapp视频播放器遇到的一些问题&#xff0c;mark下。 中途遇到了很多问题&#xff0c;如果有相同的伙伴遇到了类似的&#xff0c;欢迎交流 官方的video播放器在app上不友好&#xff0c;有以下功能不支持。 loadedmetadata、controlstoggle不支持导致只能手写控制层。 不…

Pycharm远程连接实验室服务器Conda环境配置

如何配置Pycharm和远程服务器 这类博客较多&#xff0c;参考内容 https://blog.csdn.net/fengbao24/article/details/125515542 Python解释器选择&#xff08;conda3&#xff09; 1. Settings -> Add Interpreter -> On SSH 注意&#xff0c;这里的SSH需要在你把远程…

【TCP:可靠数据传输,快速重传,流量控制,TCP流量控制】

文章目录 可靠数据传输TCP&#xff1a;可靠数据传输TCP发送方事件快速重传流量控制TCP流量控制 可靠数据传输 TCP&#xff1a;可靠数据传输 TCP在IP不可靠服务的基础上建立了rdt 管道化的报文段 GBN or SR 累计确认&#xff08;像GBN&#xff09;单个重传定时器&#xff08;像…

深入浅出TCP 与 UDP

&#x1f525; 引言 在互联网的广阔天地里&#xff0c;TCP&#xff08;Transmission Control Protocol&#xff09;和UDP&#xff08;User Datagram Protocol&#xff09;作为传输层的两大支柱&#xff0c;各自承担着不同的使命。下面这篇文章将带你从基础到进阶&#xff0c;全…

Unity射击游戏开发教程:(8)构建 UI 元素:添加分数显示

用户界面决定用户如何与屏幕交互。UI 适用于所有类型的游戏和应用程序,在此示例中,我们将为我的太空射击游戏设置一个简单的记分板。 第一步是在层次结构中创建一个 UI 元素。只需在层次结构中右键单击,滚动 UI 并选择要添加的 UI 元素类型。在本例中,我们将使用文本元素。…