欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

LayUI.upload阻止文件上传

程序员文章站 2022-04-07 21:18:17
...

LayUI.upload 时,before方法无论返回什么,都不会阻止文件上传

LayUI的上传组件是不支持before方法阻断上传的.
我在百度上搜到一些解决方案,都是压缩过的代码怎么修改,没有人说源码怎么修改
压缩过的代码修改前


y = function() {
           if ("choose" !== t && !l.auto || (l.choose && l.choose(g), "choose" !== t)) return l.before && l.before(g),
            a.ie ? a.ie > 9 ? u() : c() : void u()
        };

修改后

return "choose" === t ? l.choose && l.choose(g) : ((l.before && l.before(g)) === false ? '' : a.ie ? a.ie > 9 ? u() : c() : void u())

这对于那些使用源码进行调试的新手,依然很不友好!
经过研究,我在这里贴出源码如何修改来支持在before中如何阻止上传.
修改前的send函数

send = function(){      
      //选择文件的回调      
      if(type === 'choose' || options.auto){
        options.choose && options.choose(args);
        if(type === 'choose'){
          return;
        }
      }
      
      //上传前的回调
      options.before && options.before(args);

      //IE兼容处理
      if(device.ie){
        return device.ie > 9 ? ajaxSend() : iframeSend();
      }
      
      ajaxSend();
    }

修改后

send = function () {
                if(type === 'choose' || options.auto){
                    options.choose && options.choose(args);
                    if(type === 'choose'){
                        return;
                    }
                }
                //上传前的回调
                var b2 = options.before&&options.before(args);
                if(b2===false){
                    console.log("before check false, not need upload");
                }else{
                    //IE兼容处理
                    if (device.ie) {
                        return device.ie > 9 ? ajaxSend() : iframeSend();
                    }
                    ajaxSend();
                }
            }