关于ckfinder上传文件时不能根据结果返回自定义操作问题?
阅读原文时间:2023年07月08日阅读:1

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