element ui 拖拽上传 on-change不触发

复制代码
 1 <el-upload
 2     class="upload-demo"
 3     drag
 4     multiple
 5     action=""
 6     :file-list = "fileList"
 7     accept="application/vnd.ms-excel,application/pdf, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
 8     :on-change="(file, fileList) => {handleChange(file, fileList)}"
 9     :on-remove="(file) => {handleRemove(file)}"
10     :before-upload="handleBeforeUpload"
11     :auto-upload="false">
12     <em class="el-icon-upload"></em>
13     <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
14     <div class="el-upload__tip" slot="tip">只能上传xlsx/xls/pdf文件,且不超过3m</div>
15 </el-upload>
复制代码

element - ui启用拖拽功能后,on-change事件不触发。

 

解决方法:

去掉类型限制 accept = "application/vnd.ms-excel,application/pdf, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", 改为在on-change回调里面验证

复制代码
 handleChange(file, fileList){
       console.log('handleChange函数被触发');
       // 判断file是否是新增
       let isExist = false;
       isExist = this.fileList.some(item => {
         if(item.name == file.name) 
           return true;
       });
       if(!isExist) {
         // 检测文件类型
         let fileType = file.name.substring(file.name.lastIndexOf('.')+1).toLowerCase();
         let isFileTypeReady = fileType === 'xlsx' || fileType === 'xls' || fileType === 'pdf';
         if(!isFileTypeReady) {
           // 文件类型不符合
           fileList.some((item, index) => {
             if(item.uid == file.uid) {
               fileList.splice(index, 1);
               return true;
             }
           })
           this.$message.error("上传文件只能是xlsx/xls/pdf格式");
           return false;
         } else {
           // 其他校验
         }
       } else {
         // 如果已经存在
         fileList.some((item, index) => {
           if(item.uid == file.uid) {
             fileList.splice(index, 1);
             return true;
           }
         });
         this.$message.error(`已经存在文件${file.name}, 请勿重复上传`);
         return false;
       }
     },        
复制代码

 

posted @   一口一个小馒头  阅读(3644)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示