首先在实例化 CKEditor 时注册您的自定义浏览器/上传器。您可以为图像浏览器和一般文件浏览器指定不同的 URL。
<script type="text/javascript">
CKEDITOR.replace('content', {
filebrowserBrowseUrl : '/browser/browse/type/all',
filebrowserUploadUrl : '/browser/upload/type/all',
filebrowserImageBrowseUrl : '/browser/browse/type/image',
filebrowserImageUploadUrl : '/browser/upload/type/image',
filebrowserWindowWidth : 800,
filebrowserWindowHeight : 500
});
</script>
您的自定义代码将收到一个名为 CKEditorFuncNum 的 GET 参数。保存它 - 这就是您的回调函数。假设你把它放入$callback
.
当有人选择一个文件时,运行此 JavaScript 来通知 CKEditor 选择了哪个文件:
window.opener.CKEDITOR.tools.callFunction(<?php echo $callback; ?>,url)
其中“url”是他们选择的文件的 URL。可选的第三个参数可以是您想要在标准警报对话框中显示的文本,例如“非法文件”或其他内容。如果第三个参数是错误消息,则将 url 设置为空字符串。
CKEditor 的“上传”选项卡将在“上传”字段中提交一个文件 - 在 PHP 中,该文件将转到 $_FILES['upload']。 CKEditor 希望你的服务器输出的是一个完整的 JavaScript 块:
$output = '<html><body><script type="text/javascript">window.parent.CKEDITOR.tools.callFunction('.$callback.', "'.$url.'","'.$msg.'");</script></body></html>';
echo $output;
同样,您需要为其提供回调参数、文件的 URL 以及可选的消息。如果消息是空字符串,则不会显示任何内容;如果消息有错误,则 url 应为空字符串。
官方 CKEditor 文档在这方面并不完整,但如果您遵循上述内容,它会像冠军一样工作。