element自定义上传方法与解决无法二次上传问题

前言

本文基于element plus,如果使用的是低版本的element可以参照修改,异曲同工。
在使用element提供的上传组件时,通常有一个痛点就是,上传组件提供的上传接口属性与我们封装的api方法难以搭配,我们封装的api方法基于axios封装,里边可能融合鉴权、错误处理等方法,那么此时就需要使用上传组件的自定义上传的api:http-request
在使用时要特别注意处理一次上传完毕后,无法二次上传的问题,闲话少说上代码

自定义上传
<template>
    <el-upload
        :limit="1" 
        :show-file-list="false"
        :http-request="upFile"
        ref="uploadRef"
    >
        <el-button class="w-add">
            <el-icon><Upload /></el-icon>
            上传
        </el-button>
    </el-upload>
</template>
<script setup>
import { ref } from 'vue'
import fileUpload from '@/api/upload'

const uploadRef = ref()
// 文件上传
const upFile = data => {
    const formData = new FormData()
    formData.append('file', data.file)
    return fileUpload(formData).then(() => {
        ElMessage({ message: '导入成功', type: 'success' })
        uploadRef.value.handleRemove(data.file)
        data = null
    })
}
</script>
解决无法二次上传问题

调用组件内部方法的handleRemove方法,而不是clearFiles方法,这里特别注意一下,clearFiles方法只是清除显示的文件列表,handleRemove方法是逻辑层阻止无法二次上传的根源

uploadRef.value.handleRemove(file: UploadFile | UploadRawFile)
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值