做需求时遇到个问题,上传的excel文件检验后不符合数据要求,需要清空已上传的缓存,不然无法重新上传同名文件。
思路:
1、先前端清空
2、清除layui的文件队列缓存
$('.layui-upload-file').attr('type', 'hidden');
$('.layui-upload-file').attr('type', 'file');
clearFile();
demo
var UPLOAD_FILES;
upload.render({
elem: '#uploadFile', //绑定元素
// url: '/property/importData', //上传接口
url: '/...', //上传接口
method: 'POST',
auto: false,
accept: 'file',
bindAction: '#uploadBtn',
size: 102400*30,//限制文件大小300M
multiple: false,
choose:function(obj){
UPLOAD_FILES = obj.pushFile();
obj.preview(function(index, file, result){
if(file.name.length>0) {
choose_file_flag=true;
checkExcel(excel);
//重置input文件上传框,清理fileList
if(!choose_file_flag){
//清除文件缓存,不然无法上传同名文件
$('.layui-upload-file').attr('type', 'hidden');
$('.layui-upload-file').attr('type', 'file');
clearFile();
}
}
});
},
before: function(obj) {
},
done: function(res, index, upload) {//上传完毕回调
}
,error: function() {//请求异常回调
}
});
//清空文件队列
function clearFile(){
for (let x in UPLOAD_FILES) {
delete UPLOAD_FILES[x];
}
}
obj.pushFile()
会将已选择的文件存进layui的文件上传队列,同时返回队列对象。我们需要拿到那个队列只能这么干,即使不需要手动存进队列。
参考文章: