ElementUI中使用el-upload上传文件校验不通过时触发on-remove事件

本文介绍了在ElementUI的el-upload组件中,当文件上传校验失败(如格式、大小、重名)时,如何避免错误地触发on-remove事件删除已上传文件。问题关键在于未在移除文件前检查文件的状态。解决方案是添加状态判断,确保只有在文件上传成功(status === 'success')时才执行移除操作。
摘要由CSDN通过智能技术生成

项目场景:

使用ElementUI中el-upload上传文件,上传文件校验不通过时触发on-remove事件

问题描述

ElementUI中使用el-upload上传文件时,文件的格式、大小、重名等校验不通过时会触发on-remove事件处理函数,例如重名校验不通过时触发了on-remove事件导致之前上传的文件移除。

代码如下:

// 上传文件前
handleBeforeUpload(file) {
   
  let arr = file.name.split('.');
  if (!['pdf', 'doc', 'docx', 'ppt', 'pptx', 'jpg', 'jpeg', 'png'].includes
el-uploadElement UI 文件上传组件,它可以进行文件校验。要对上传的文件进行校验,你可以使用 Element UI 提供的属性和事件。 首先,在 el-upload 组件上设置 accept 属性来指定允许上传的文件类型。例如,如果你只想允许上传图片文件,可以设置 accept="image/*"。 接下来,你可以使用 before-upload 属性来自定义文件校验的逻辑。before-upload 属性接收一个函数,该函数会在每个文件上传前被调用。你可以在该函数进行校验,并返回一个 Boolean 值来指示是否继续上传该文件。 以下是一个示例代码,展示了如何对文件进行校验: ```html <template> <el-upload action="/upload" :before-upload="beforeUpload" :on-success="handleSuccess" :on-error="handleError" accept="image/*" > <el-button slot="trigger">点击上传</el-button> <div slot="tip">只能上传图片文件</div> </el-upload> </template> <script> export default { methods: { beforeUpload(file) { // 自定义校验逻辑 const isValidType = file.type === 'image/jpeg' || file.type === 'image/png'; const isValidSize = file.size / 1024 / 1024 < 2; // 文件大小限制为2MB if (!isValidType) { this.$message.error('只能上传JPEG和PNG格式的图片'); } if (!isValidSize) { this.$message.error('文件大小不能超过2MB'); } return isValidType && isValidSize; }, handleSuccess(response, file) { // 文件上传成功的处理逻辑 this.$message.success('文件上传成功'); }, handleError(error, file) { // 文件上传失败的处理逻辑 console.error(error); this.$message.error('文件上传失败'); }, }, }; </script> ``` 在上述示例,beforeUpload 方法对文件进行了类型和大小校验,如果校验不通过,则阻止文件上传并给出相应的错误提示。handleSuccess 和 handleError 方法分别用于处理文件上传成功和失败后的逻辑。 注意,上述示例的消息提示部分使用的是 Element UI 的 Message 组件,你可以根据自己的需求来替换为其他方式的提示。 希望以上信息能够对你有所帮助!如果你还有其他问题,请随提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gulugulumaogepao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值