CKFinder命令扩展
1. CKFinder命令的扩展,在此以“新建 xml文件”为例讲述命令扩展的方法。
2. 在CKFinder_Connector_Core_Connector 类的executeCommand()方法下(大概 83-91之间任意位置)添加 “CreateFile”命令。
注意:添加命令一定要分析出其添加的位置,不同的命令添加的位置可能不同,但都是在executeCommand()方法下添加。
CKFinder_Connector_Core_Connector 类的实际存储位置为:
core\connector\php\php5\Core\Connector.php
3. 再在core\connnector\php\php5\CommandHandler文件夹下添加CreateFile.php文件。
由于新建文件的操作和 新建文件夹的操作是类似的,所以新CreateFolder.php中的代码拷贝到CreateFile.php中。
4. 修改CreateFile.php中的代码:
(1) 修改类名:将CKFinder_Connector_CommandHandler_CreateFolder 改为
CKFinder_Connector_CommandHandler_CreateFile
(2) 再将 40行的 private $command = "CreateFolder"; 改为
private $command = "CreateFile";
(3) 最后修改 buildXml()方法中的内容。新建文件夹和新建文件的操作类似,
大体方法不用改,只要改具体的细节即可。
例:新建文件夹操作将buildXml方法改为:
protected function buildXml()
{
$_config =& CKFinder_Connector_Core_Factory::getInstance("Core_Config");
if(!$this->_currentFolder->checkAcl(CKFINDER_CONNECTOR_ACL_FOLDER_CREATE)){
$this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_UNAUTHORIZED);
}
//判断 fileName是否设置
if (!isset($_GET["fileName"])) {
$this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_INVALID_NAME);
}
//将fileName进行转码
$sFileName = CKFinder_Connector_Utils_FileSystem::convertToFilesystemEncoding($_GET["fileName"]);
//判断文件扩展名是否合法
$resourceTypeInfo = $this->_currentFolder->getResourceTypeConfig();
if (!$resourceTypeInfo->checkExtension($sFileName)) {
$this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_INVALID_EXTENSION);
}
// 检查文件名称是否合法,或 是否已有此名称的隐藏文件
if (!CKFinder_Connector_Utils_FileSystem::checkFileName($sFileName) || $resourceTypeInfo->checkIsHiddenFile($sFileName)) {
$this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_INVALID_NAME);
}
//组合路径
$sServerDir = CKFinder_Connector_Utils_FileSystem::combinePaths($this->_currentFolder->getServerPath(), $sFileName);
//检查文件是否已在存在
if (file_exists($sServerDir)) {
$this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_ALREADY_EXIST);
}
if (!is_writeable($this->_currentFolder->getServerPath())) {
$this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_ACCESS_DENIED);
}$_resourceTypeConfig = $this->_currentFolder->getResourceTypeConfig();
//判断 fileName是否已经存在
if (!isset($_GET["fileName"])) {
$this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_INVALID_NAME);
}
//将fileName进行转码
$sFileName = CKFinder_Connector_Utils_FileSystem::convertToFilesystemEncoding(
$_GET["fileName"]);
// 检查文件或文件夹名称是否合法
if (!CKFinder_Connector_Utils_FileSystem::checkFileName($sFileName) ||
$_resourceTypeConfig->checkIsHiddenFolder($sFileName)) {
$this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_INVALID_NAME);
}
//组合路径
$sServerDir = CKFinder_Connector_Utils_FileSystem::combinePaths(
$this->_currentFolder->getServerPath(), $sFileName);
if (!is_writeable($this->_currentFolder->getServerPath())) {
$this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_ACCESS_DENIED);
}
//创建标志
$bCreated = false;
if ($perms = $_config->getChmodFolders()) {
$oldUmask = umask(0);
$doc = new DOMDocument("1.0","utf-8");
$root = $doc->createElement("course");
$root = $doc->appendChild($root);
$bCreated = $doc->save($sServerDir);
umask($oldUmask);
}else {
$doc = new DOMDocument("1.0","utf-8");
$root = $doc->createElement("course");
$root = $doc->appendChild($root);
$bCreated = $doc->save($sServerDir);
}
if (!$bCreated) {
$this->_errorHandler->throwError(CKFINDER_CONNECTOR_ERROR_ACCESS_DENIED);
} else {
$oNewFileNode = new Ckfinder_Connector_Utils_XmlNode("NewFile");
$this->_connectorNode->addChild($oNewFileNode);
$oNewFileNode->addAttribute("name", CKFinder_Connector_Utils_FileSystem::convertToConnectorEncoding(
$sFileName));
}
}
分享到:
相关推荐
7. **插件扩展**:通过"ckfinderplug"标签,我们可以推断出CKFinder支持插件扩展,允许开发人员根据需求添加自定义功能。 在使用"ckfinder2.3.jar"时,开发者通常需要将其部署到服务器,并配置相关的设置,如数据库...
CKFinder是一款功能强大的文件管理器,专为Web应用设计,支持多种编程语言,其中包括Java。在"ckfinder_java_2.5.1"版本中,我们聚焦于Java平台...同时,这也有助于开发者自定义和扩展CKFinder,以满足特定项目的需求。
而CKFinder是一款功能强大的文件管理器,它与CKEditor编辑器配合使用,方便用户上传、管理和选择图片、文档等资源。将CKFinder集成到Spring Boot项目中,可以提供一个便捷的后台文件管理方案。下面我们将详细探讨...
mavne安装到本地命令: mvn install:install-file -Dfile=D:\ckfinder2.3\apache-ant-zip-2.3.jar -DgroupId=com.ckfinder -DartifactId=apache-ant-zip -Dversion=2.3 -Dpackaging=jar mvn install:install-file -...
7. **插件扩展**:允许开发者通过编写插件来扩展其功能,满足个性化需求。 8. **多语言支持**:CKFinder 支持多种语言,方便全球用户使用。 9. **API集成**:提供丰富的API接口,便于与现有系统无缝集成,例如CMS...
6. 插件和扩展:CKFinder 2.3可能包含一些插件或扩展,以增加更多功能,如文件转换、云存储服务集成等。 7. Java平台兼容性:这个版本是基于Java开发的,因此它可以在任何支持Java运行环境的服务器上运行,包括...
总的来说,面对CKFinder的版本差异问题,我们需要理解其组件的作用,分析版本变化,选择合适的解决策略,并保持代码的灵活性和可扩展性。同时,及时跟进官方更新,以便在未来遇到类似问题时能更快地找到解决方案。
开发者可以利用CKFinder的API扩展其功能,如自定义插件、后处理器或钩子函数,以满足特定的业务需求。 总的来说,CKFinder 2.6.2 .NET去demo版为.NET开发者提供了一个强大的文件管理解决方案,通过简单的集成和配置...
CKFinder是一款广泛应用于Web开发中的文件管理工具,它允许用户在服务器上方便地浏览、上传、下载、编辑和删除文件。CKFinder的核心是基于Java的,因此它依赖于一系列的jar包来提供其功能。在提供的文件列表中,我们...
Java Maven 项目中,CKFinder 2.3 是一个常用的内容管理和文件上传工具,它能够与后端应用程序集成,提供用户友好的界面来管理和上传文件。CKFinder 的 Maven 依赖是开发人员在 Java 应用中整合这个功能的关键。下面...
CKFinder 是一个强大的文件管理器,常用于网页编辑器中,如 CKEditor,提供上传、浏览、管理和编辑文件的功能。版本 2.3 是该软件的一个特定发行版,可能包含了性能优化、新特性或者对旧功能的改进。在这个压缩包中...
CKFinder 的优势在于其灵活性和可扩展性。通过插件机制,你可以添加自定义的功能或者扩展对特定文件类型的处理。同时,CKFinder 提供了多种语言支持,方便不同地区的用户使用。 总结一下,CKFinder 的简单应用涉及...
1、下载asp版本的ckfinder,放到ckeditor目录下 2、修改ckeditor\config.js,加上如下内容: CKEDITOR.editorConfig = function( config ) { config.scayt_autoStartup = false config.language = 'zh-cn'; //中文 ...
CKFinder是一款功能强大的Web文件管理器,它使用Ajax技术提供了流畅的用户界面,使得在Web上浏览、上传、编辑和管理文件变得极其便捷。这款工具广泛应用于网站后台、CMS(内容管理系统)以及需要用户交互式文件操作...
在本文中,我们将深入探讨如何将Ckeditor与ckfinder整合在Java环境下,实现文件上传功能。Ckeditor是一款强大的富文本编辑器,而ckfinder则是一个文件管理器,它们结合使用可以方便地在编辑器中插入、管理和上传各种...
接下来,`ckfinder`的集成是为了扩展`ckeditor`的文件管理能力。`ckfinder`允许用户在服务器端选择和上传图片或文件,支持多种文件类型。集成`ckfinder`时,你需要在服务器端安装并配置ckfinder,包括设置文件存储...
**CKEditor与CKFinder整合应用详解** 在网页开发中,富文本编辑器是不可或缺的工具,它能够提供用户友好的界面来编辑HTML内容。CKEditor和CKFinder是两个非常流行的开源工具,它们协同工作,为用户提供了一种强大的...
这些插件可以扩展CKFinder的功能,如优化上传性能、增加新的文件类型支持等。 6. **错误调试与日志**:当遇到问题时,CKFinder的错误日志可以帮助定位和解决问题。了解如何启用和解读日志是调试过程的关键步骤。 7...
3. **插件系统**:CKEditor 4.2支持丰富的插件,可以扩展其功能,例如表格工具、公式编辑器、源代码视图等。CKFinder就是这样一个插件,用于文件和图像管理。 **CKFinder 2.3.1 知识点** 1. **CKFinder 功能**:...
7. **插件扩展**:`plugins`目录包含可扩展的功能模块,如图像处理、PDF预览等,使得CKFinder功能更加丰富。 8. **核心功能优化**:精简版可能移除了非必要的组件,提高了加载速度和运行效率。 **技术细节** 1. *...