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

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-uploadclass="upload-file padding"ref="uploadFile"multipleaccept="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.fileuploadImageInfo({ file: file, width: 165, height: 245, caseId: this.caseId, taskId: this.taskId }).then(res => {if (res.success && res.data) {// 后端接口返回后逻辑-todoconst 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.hqwc.cn/news/659576.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode:1103. 分糖果 II + 模拟】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

【论文阅读】ELAN-Efficient Long-Range Attention Network for Image Super-resolution

ELAN-Efficient Long-Range Attention Network for Image Super-resolution 论文地址简介1 引言2相关工作2.1 基于 CNN 的 SR 方法2.2 基于 Transformer 的 SR 方法 3 方法论3.1 ELAN 的整体流程3.2 Efficient Long-range Attention Block (ELAB) 4实验4.1实验设置4.2 与轻量级…

体验分改革!抖音小店重视服务体验,对商家有何影响?

大家好&#xff0c;我是电商花花。 最近关注抖音小店规则的应该都知道抖音小店又更新了体验分&#xff0c;关于新版的体验分有还说呢么变动&#xff0c;下面给大家阐述一下&#xff0c;都对哪些指标进行了调整。 不过大家也不要太慌&#xff0c;新版体验分过着预计在2024年6月…

知了汇智引领新产教融合:成都纺织高专与西南石油大学电商学子走进国际商贸城

随着数字经济浪潮的汹涌澎湃&#xff0c;新业态、新模式、新技术层出不穷&#xff0c;AI、网络直播、短视频、AI大模型等创新技术如雨后春笋般涌现&#xff0c;不仅改变了人们的生活方式&#xff0c;也深刻影响着传统行业的经营模式。在这一背景下&#xff0c;市场对数字营销人…

Linux挂载硬盘

1、查看硬盘数量 fdisk -l # 可以看到三个磁盘 # /dev/vda 50G # /dev/vdb 100G 新增 # /dev/vdc 100G 新增2、查看当前挂载情况 df -h # 可以看到50G的已经挂载3、格式化待挂载盘 # 对新的数据盘进行挂载前要进行格式化&#xff0c;只有格式化后才可以挂载 mkfs.ext4 /dev/…

【C++】类和对象⑤(static成员 | 友元 | 内部类 | 匿名对象)

&#x1f525;个人主页&#xff1a;Forcible Bug Maker &#x1f525;专栏&#xff1a;C 目录 前言 static静态成员 友元 友元函数 友元类 内部类 匿名对象 结语 前言 本篇主要内容&#xff1a;类和对象的一些知识点补充&#xff0c;包括static静态成员&#xff0c;友…

gateway全局token过滤器

添加gateway依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency>创建一个tokenFilter 实现全局过滤器GlobalFilter,并且实现fitler方法 Value("${…

Android4.4真机移植过程笔记(二)

5、盘符挂载 先定义overlay机制路径&#xff0c;后面storage_list.xml要用到&#xff1a; 在路径&#xff1a; rk3188_android4.4.1/device/rockchip/OK1000/overlay/frameworks/base/core/res/res/xml/定义好&#xff0c;注意名字要和emmc的代码片段&#xff08;往下面看&am…

Android4.4真机移植过程笔记(一)

1、RK源码编译 获取内核源码&#xff1a; git clone git172.28.1.172:rk3188_kernel -b xtc_ok1000 内核编译环境&#xff1a; 从172.28.1.132编译服务器的/data1/ZouZhiPing目录下拷贝toolchain.tar.gz&#xff08;交叉编译工具链&#xff09;并解压到与rk3188_kernel同级目…

常见设计模式及其Rust实现

本文提供了一个设计模式的综合概述&#xff0c;涵盖了设计模式的必要性&#xff0c;基本原则以及23种常见模式的概括性描述。结合Rust语言自身的特性&#xff0c;重点阐述了Rust中Builder&#xff0c;Combinator&#xff0c;RAII,Typestate(state machine), Command, Strategy和…

Ansible-Tower安装破解

主机IP地址版本Ansible192.168.169.2042.9.1Tower192.168.169.2043.6.2 基础环境 systemctl disable firewalld --now && setenforce 0 sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config mv /etc/yum.repos.d/CentOS-* /tmp/ curl -o /etc/yum.repo…

国内各种免费AI聊天机器人(ChatGPT)推荐(上)

作者主页&#xff1a;点击&#xff01; 国内免费AI推荐专栏&#xff1a;点击&#xff01; 创作时间&#xff1a;2024年4月27日11点25分 欢迎来到AI聊天机器人推荐系列的第一篇文章&#xff01; 在这个系列中&#xff0c;我将引领您探索国内各种AI聊天机器人的精彩世界。 从…