el-upload 自定义上传并校验文件格式

功能:选择图片或其他文件格式,切换类型或格式错误时删除已上传文件
vue

 <el-form-item label="文件类型">
   <el-radio-group v-model="form.fileType" @change='fileList=[]'>
         <el-radio label="0">图纸</el-radio>
         <el-radio label="1">说明文档</el-radio>
     </el-radio-group>
 </el-form-item>
 <el-form-item label="上传文件">
     <el-upload
         class="upload-demo"
         ref="upload"
         :limit=1
         :accept="form.fileType=='0'?'image/jpeg,image/png':''"
         :auto-upload="false"
         :file-list="fileList"
         :on-change='onSuccessLoad'>
         <el-button slot="trigger" size="small" type="primary" @click='fileList=[]'>选取文件</el-button>
         <div slot="tip" class="el-upload__tip">{{form.fileType=='0'?"请选择图片JPG或PNG格式上传":"请选择pdf、word、excel文档上传" }},且大小不超过2M</div>
     </el-upload>
 </el-form-item>

js

/**
* 文件上传时调用检验
 * */
onSuccessLoad(files, fileList){
    this.uploadForm = []; //存放上传文件
    console.log(files, fileList)
    const isLt2M = files.raw.size / 1024 / 1024 < 2;
    if (!isLt2M) {
        this.$message.warning('上传文件大小不能超过 2MB!');
        this.$refs.upload.handleRemove(files); //可以删除已上传的文件
    }
    else{
        if( this.form.fileType == '1' ){
            console.log(files.raw.name)
            let FileExt = files.raw.name.replace(/.+\./, "");
            if (['pdf','doc','docx','xlsx'].indexOf(FileExt.toLowerCase()) === -1){
                this.$message.warning('请上传文件格式为pdf、word、excel的附件!');
                this.$refs.upload.handleRemove(files); // 如果不删除,错误文件还会显示,使用这个方法可以删除
            }
            else{
                this.uploadForm = fileList;
            }
        }
        else{
            this.uploadForm = fileList; //如果成功,将文件列表放入数组内,在表格提交时才上传文件
        }
    }
},
//提交表单
submitFun(formName){
    this.$refs[formName].validate((valid) => {
        if (valid) {
            let file = this.uploadForm[0].raw;
            let fd = new FormData();
            fd.append('0',file);
            //uploadFileAction这个请求方法根据自己项目接口写
            let result = uploadFileAction(fd);
            ...
        }
    });
},

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用el-upload组件时,你可以通过设置show-file-list为false来禁用自带的文件列表。然后,你可以在data中定义一个fileList数组,用于存放文件列表的数据。在uploadSuccess方法中,你可以将当前上传文件文件列表作为参数,并将fileList数组清空并赋值为新的文件列表,以更新文件列表的显示。 具体操作如下: 1. 在data中定义一个fileList数组:data(){ return{ fileList:[] } } 2. 在el-upload组件中设置show-file-list为false,禁用自带的文件列表。 3. 在uploadSuccess方法中,将当前上传文件文件列表作为参数,清空fileList数组,并将其赋值为新的文件列表。 以下是示例代码: ```html <el-upload show-file-list="false" :on-success="uploadSuccess" > <!-- 其他上传相关配置 --> </el-upload> ``` ```javascript data() { return { fileList: [] } }, methods: { uploadSuccess(file, fileList) { this.fileList = [] this.fileList = fileList } } ``` 你可以根据自己的需求对文件列表的展示进行自定义,比如使用表格展示,可以参考官方文档中的具体参数说明和示例代码。另外,你还可以根据文件大小展示问题进行处理,比如将文件大小以KB或MB的形式显示,并可以根据需要添加文件下载和删除的功能。同时,你也可以对上传文件的大小和类型进行校验。通过以上的操作,你就可以实现el-upload自定义文件列表功能。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [el-upload自定义文件列表](https://blog.csdn.net/weixin_60945744/article/details/127212452)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [elementUI+el-upload 上传、下载、删除文件以及文件展示列表自定义为表格展示](https://blog.csdn.net/ka_xingl/article/details/115522816)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值