搜索了百度,各社区,都没有该解决方案,又查看了layui.upload.js源码,各种尝试后依然无所获,重新看了一遍简短的文档,突然受到了启发,现独家分享给大家:
1)充分了解三个状态:choose,before,done。
choose)表示文件选择后的回调,注意此时并没有加入上传队列;
before)表示文件上传前的回调,注意此时已经加入上传队列;
done)表示文件上传成功的回调;
2)要使用choose,必须设置为auto为false
这一步就是精华所在了,很多人都不会设置auto,而默认值是true自动上传,自动上传就无法阻止不上传了。
所以,必须要设置auto:false,这样就可以配合choose了,在choose,如果不执行obj.upload(index, file)就不会上传了。
3)代码分享
layui.use(['layer', 'upload'], function () {
var upload = layui.upload;
upload.render({
elem: '#divUpload'
, url: '/ashx/upload.ashx'
, multiple: true //多文件上传
, accept: "file"
, data: { action: 'layupload' }
, auto: false
, choose: function (obj) {
obj.preview(function (index, file, result) {
if ($(".fileName[data-filename='" + file.name.toLowerCase() + "']").length > 0)
alert("文件已存在");
else
obj.upload(index, file);//文件上传
});
}
, before: function (obj) {
alert("文件开始上传,请等待");
}
, done: function (res, index, upload) {
alert("文件上传成功");
}, error: function (a, b) {
alert("文件上传发生错误");
}
});
});