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));
}
}
分享到:
相关推荐
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 -...
CKFinder,CKFinder破解版,CKFinder解决中文路径和乱码问题,采用时间戳的方式重命名文件和图片。这是java版,需要PHP版的请留言。
ckfinder-2.3以及依赖ckfinder-2.3以及依赖ckfinder-2.3以及依赖
ckeditor+ckfinder精简版 ckeditor+ckfinder精简版 ckeditor+ckfinder精简版
ckfinder_java_2.5.1源码,java版
ckfinder整套下载。里面包含 了所需要的jar包,maven下载不到这个工具类。实力下载
ckfinder_aspnet_3.5.1 方便自己使用
ckFinder C#插件的ckFinder
com.ckfinder.apache-ant-zip、com.ckfinder.ckfinder、com.ckfinder.ckfinderplugin-fileeditor、com.ckfinder.ckfinderplugin-imageresize
maven jar包依赖 com.ckfinder:ckfinder:jar:2.3
第一步:网站需要引用CKFinder的dll(目录:/CKFinder/bin/Release/CKFinder.dll) 第二步:配置CKEditor的config.js (目录:/CKEditor/config.js ) 在CKEDITOR.editorConfig函数里加上,不需要的功能可以去掉 ...
CKFinder jar 全部,大家赶快来下载哦,齐全 2.3版本
官方没有给出ckfinder的jsp的版本,而自己最近要在一个java项目中想使用ckfinder,因此就自己做了一个。这个是参照官方的PHP版本来做的,因为时间仓促和受PHP编程的影响,代码写得一团糟(真丢人)。本来想重新整理...
java版ckfinder文件管理Demojava版ckfinder文件管理Demo demodemodemodemo
直接使用后发现链接的connector地址报error,查看...CKFinder.FileBrowser _FileBrowser = new CKFinder.FileBrowser();//内设默认值,对应./ckfinder/,其他地址重新赋值就好 _FileBrowser.SetupCKEditor( CKEditor1 );
wordpress插件ckeditor整合ckfinder
官方没有给出ckfinder的jsp的版本,而自己最近要在一个java项目中想使用ckfinder,因此就自己做了一个。这个是参照官方的PHP版本来做的,因为时间仓促和受PHP编程的影响,代码写的一团糟(真丢人)。本来想重新整理...
ckfinder-2.6.0.jar适用于ckfinder在上传文件时对文件进行重命名,命名规则为uuid,对文件夹进行自定义命名
CKFinder最新破解版,
ckfinder_java_2.6.0,ckfinder_java_2.6.0ckfinder_java_2.6.0ckfinder_java_2.6.0