layui-upload.render 文件上传后清空已上传的文件 选择文件后清空上一次选择的文件
upload.render({ elem: '#LAY-excel-upload', //绑定元素 url: MODULE_PATH + '/upload',//上传接口(PS:这里不用传递整个 excel) accept: 'file', auto: false, //选择文件后不自动上传 点击按钮触发 data:{"canshu":"参数"},//@RequestParam(value="canshu", required = false)String canshu 后台接收 bindAction: '#uploadAction', //指向一个按钮触发上传 exts: 'xls|xlsx', choose: function (obj) {// 选择文件回调 var files = obj.pushFile(); <!-- ***************************************************************************** --> //上传时 文件存进layui的文件上传队列,会出现重复校验第一次上传文件,设置校验删除之前历史文件 var lastX=0; var fileCount=0; //遍历,获取最后一个文件的下标索引 for (var x in files) { //x是文件对象的唯一索引,是个字符串,例如:1612418956647-0 lastX=x; fileCount++; } if(fileCount>1){ //删除其他文件,保留最后一个文件 for (var x in files) { if(x != lastX){ delete files[x]; } } } <!-- ***************************************************************************** -->
var fileArr = Object.values(files);// 注意这里的数据需要是数组,所以需要转换一下 uploadExcel(fileArr); //上传校验 如果只需要最新选择的文件,可以这样写: uploadExcel([files.pop()]) }, before: function(obj){ layer.load(); }, done: function(res, index, upload){ layer.close(layer.load()); //导入后 回调函数 }, error:function(){ layer.close(layer.load()); } });
function uploadExcel(files) { try { excel.importExcel(files, { // 可以在读取数据的同时梳理数据 fields: { 'nickname': 'A', 'idNumber': 'B', 'email': 'C', 'phone': 'D' } }, function(data) { var emptyRow=""; fileTag=true; fileIsNull=true; if(data[0].sheet1.length<2) {//length : 0空文件 1只有表头 layer.msg("上传文件为空!", {icon: 7}); $('#LAY-excel-upload').val(""); }else{ for (var i=1;i<data[0].sheet1.length;i++) {//从1开始 0为首行 var tag=(data[0].sheet1[i].nickname == "") ? true : false; if(tag == true) { var a=i+1; if(emptyRow == "") { emptyRow = a+""; }else{ emptyRow = emptyRow + "," +a; } continue; } tag=(data[0].sheet1[i].idNumber == "") ? true : false; if(tag == true) { var a=i+1; if(emptyRow == "") { emptyRow = a+""; }else{ emptyRow = emptyRow + "," +a; } continue; } tag=(data[0].sheet1[i].email == "") ? true : false; if(tag == true) { var a=i+1; if(emptyRow == "") { emptyRow = a+""; }else{ emptyRow = emptyRow + "," +a; } continue; } tag=(data[0].sheet1[i].phone == "") ? true : false; if(tag == true) { var a=i+1; if(emptyRow == "") { emptyRow = a+""; }else{ emptyRow = emptyRow + "," +a; } continue; } } if(emptyRow != "") { layer.msg("表格中第"+emptyRow+"行有空数据,请填写完整后再上传!", {icon: 7}); $('#LAY-excel-upload').val(""); } } }) } catch (e) { layer.alert(e.message) } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律