最近项目中为了便于文件的管理,所以CMS项目中使用到了ckfinder插件,但是在使用的过程中,发现其自带的上传事件,如果上传重名的文件,该工具会自动提示错误,显示上传失败。但是如果想要自己去处理重名(弹出确认框,用户自己选择替换、保留两个文件或者取消上传)的结果怎么办呢?

首先,翻看了ckfinder的官方api,竟然没有关于上传文件返回结果处理的api,它本身上传的所有逻辑都是底层完成,要改源码?确实太麻烦了!!!!!!

最后,在查看所有的api中,发现ckfinde提供了可以自定义添加按钮的功能

......
this.finder.on('toolbar:reset:Main:file', function (evt) {
                    // 自定义上传文件方法
                    evt.data.toolbar.push({
                        type: 'button',
                        name: 'upload',
                        priority: 100,
                        label: '上传',
                        icon: 'ckf-presets',
                        action: function (e) {
                            me.getFileModel(e,evt)
                        }
                    });
                    // 压缩文件按钮
                    evt.data.toolbar.push({
                        type: 'button',
                        name: 'compress',
                        priority: 100,
                        label: '压缩文件',
                        icon: 'ckf-presets',
                        action: function () {
                            me.compressFiles(evt, true)
                        }
                    });
 })
......

我如果把它自带的上传按钮给隐藏,然后添加自定义的上传按钮,然后把上传的所有逻辑自己去做,但是要注意的是要先抓取到ckfinder上传文件时的所有参数,然后自己按照其上传方式,进行上传操作,这样就可以拿到返回之后做一些自定义的处理,这样岂不美哉?!

后来一番大胆尝试,果然可以!

但是这样的方案还有一个问题,就是ckfider支持拖拽上传,假如用户拖拽上传文件,那么上传的逻辑还是走的ckfider自带的逻辑,这样又回到了开始,真是郁闷,这个确实是个小问题,后续有待解决.........

posted on 2020-04-09 20:16  Jack·zhou  阅读(662)  评论(0编辑  收藏  举报