最近项目中为了便于文件的管理,所以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自带的逻辑,这样又回到了开始,真是郁闷,这个确实是个小问题,后续有待解决.........