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("文件上传发生错误"); } }); }); ~~~