2009年8月25日 由于PHP存在中文目录读取问题,将延期发布。

2009年9月3日 正式发布:查看、修改、删除文件功能的fckeditor 2.6.4.1
相关图片请查看:http://home.blueidea.com/attachment/200909/1/336696_1251813604S01b.gif
相关其它:http://home.blueidea.com/apps.php?do=case&ac=lists&uid=336696&picid=39979&oid=0

1。 第一步 找到这个文件 /fckeditor\editor\filemanager\browser\default\frmresourceslist.html

将已经存在的代码修改为:

oListManager.GetFolderRowHtml = function( folderName, folderPath )
{// Build the link to view the folder.var sLink = '<a href="#" οnclick="OpenFolder(\'' + ProtectPath( folderPath ) + '\');return false;"><img alt="" src="data:images/Folder.gif" width="16" height="16" border="0"> ' ;var rLink = '<a href="#" title="Rename Folder" οnclick="RenameFolder(\'' + folderName + '\');return false;"><img src="data:images/rename.gif" width="16" height="16" border="0" alt="Rename Folder" title="Rename Folder"></a>' ;var dLink = '<a href="#" title="Delete Folder" οnclick="DeleteFolder(\'' + folderName + '\');return false;"><img src="data:images/delete.gif" width="16" height="16" border="0" alt="Delete Folder" title="Delete Folder">' ;var ssLink =  rLink + dLink;return '<tr>' +'<td width="16"><\/td><td nowrap> ' +sLink +folderName +'<\/a></td><td align="right" nowrap>' + ssLink +'<\/td><\/tr>' ;
}oListManager.GetFileRowHtml = function( fileName, fileUrl, fileSize )
{var sIcon = oIcons.GetIcon( fileName ) ;// Build the link to view the file.var sLink = '<a href="#" οnclick="OpenFile(\'' + ProtectPath( fileUrl ) + '\');return false;"><img alt="" src="data:images/icons/' + sIcon + '.gif" width="16" height="16" border="0"> ' ;var vLink = '<a href="' + ProtectPath( fileUrl ) + '" target="_blank"" title="View file"><img src="data:images/view.gif" width="16" height="16" border="0" alt="View File" title="View File"></a>' ;var rLink = '<a href="#" title="Rename file" οnclick="RenameFile(\'' + fileName + '\');return false;"><img src="data:images/rename.gif" width="16" height="16" border="0" alt="Rename File" title="Rename File"></a>' ;var dLink = '<a href="#" title="Delete file" οnclick="DeleteFile(\'' + fileName + '\');return false;"><img src="data:images/delete.gif" width="16" height="16" border="0" alt="Delete File" title="Delete File"></a>' ;// Get the file icon.var ssLink =  vLink + rLink + dLink;return '<tr>' +'<td width="16"><\/td><td> ' +sLink +fileName +'<\/a>' +'<\/td><td align="right" nowrap> ' +fileSize +' KB' + ssLink +'<\/td><\/tr>' ;
}function OpenFolder( folderPath )
{// Load the resources list for this folder.window.parent.frames['frmFolders'].LoadFolders( (folderPath) ) ;
}function OpenFile( fileUrl )
{window.top.opener.SetUrl( fileUrl.replace( '#', '%23' ) ) ;window.top.close() ;window.top.opener.focus() ;
}function DeleteFolder( folderUrl )
{if ( !confirm( 'Do you really delete the folder "' + folderUrl + '" ?' ) ) return false;oConnector.SendCommand( 'DeleteFolder', 'FolderName=' + ( encodeURI(folderUrl) ) , DeleteFolderCallBack ) ;
}function DeleteFolderCallBack( fckXml )
{var oNode = fckXml.SelectSingleNode( 'Connector/Error' ) ;var iErrorNumber = parseInt( oNode.attributes.getNamedItem('number').value ) ;var sErrorDescription = String( oNode.attributes.getNamedItem('originalDescription').value ) ;switch ( iErrorNumber ){case 0 :Refresh() ;break ;case 201 :alert( 'You have no permissions to delete the folder' ) ;break ;case 202 :alert( 'Invalid folder name' + sErrorDescription ) ;break ;case 203 :alert( 'Folder not exists' + sErrorDescription ) ;break ;default :alert( 'Error deleting folder. \nError number: ' + iErrorNumber  + ' \nError description: ' + sErrorDescription ) ;break ;}
}function DeleteFile(fileUrl)
{if ( !confirm( 'Do you really delete the file "' + fileUrl + '" ?' ) ) return false;oConnector.SendCommand( 'DeleteFile', 'FileName=' + encodeURI( fileUrl ) , DeleteFileCallBack ) ;
}function DeleteFileCallBack( fckXml )
{var oNode = fckXml.SelectSingleNode( 'Connector/Error' ) ;var iErrorNumber = parseInt( oNode.attributes.getNamedItem('number').value ) ;var sErrorDescription = String( oNode.attributes.getNamedItem('originalDescription').value ) ;switch ( iErrorNumber ){case 0 :Refresh() ;break ;case 301 :alert( 'You have no permissions to delete the file' ) ;break ;case 302 :alert( 'Invalid file name' + sErrorDescription ) ;break ;case 303 :alert( 'File not exists' + sErrorDescription  ) ;break ;default :alert( 'Error deleting file. \nError number: ' + iErrorNumber  + ' \nError description: ' + sErrorDescription ) ;break ;}
}function RenameFolder( folderName )
{var newName = prompt('Please enter the new folder name for "' + folderName + '":', folderName);if ((newName != null) && (newName != '') && (newName != folderName)) {oConnector.SendCommand( 'RenameFolder', "FolderName=" + encodeURI(folderName) + "&NewName=" + encodeURI ( newName ), RenameFolderCallBack ) ;}
}function RenameFolderCallBack( fckXml )
{var oNode = fckXml.SelectSingleNode( 'Connector/Error' ) ;var iErrorNumber = parseInt( oNode.attributes.getNamedItem('number').value ) ;var sErrorDescription = String( oNode.attributes.getNamedItem('originalDescription').value ) ;switch ( iErrorNumber ){case 0 :Refresh() ;break ;case 401 :alert( 'You have no permissions to rename the folder' ) ;break ;case 402 :alert( 'Invalid folder name' + sErrorDescription ) ;break ;case 403 :alert( 'is not Folder' + sErrorDescription ) ;break ;case 404 :alert( 'Folder not exists' + sErrorDescription ) ;break ;default :alert( 'Error renaming folder. \nError number: ' + iErrorNumber  + ' \nError description: ' + sErrorDescription ) ;break ;}
}function RenameFile( fileName )
{var newName = prompt('Please enter the new file name for "' + fileName + '":', fileName);if ((newName != null) && (newName != '') && (newName != fileName)) {oConnector.SendCommand( 'RenameFile', "FileName=" + encodeURI( fileName ) + "&NewName=" + encodeURI( newName ), RenameFileCallBack ) ;}
}function RenameFileCallBack( fckXml )
{var oNode = fckXml.SelectSingleNode( 'Connector/Error' ) ;var iErrorNumber = parseInt( oNode.attributes.getNamedItem('number').value ) ;var sErrorDescription = String( oNode.attributes.getNamedItem('originalDescription').value ) ;switch ( iErrorNumber ){case 0 :Refresh() ;break ;case 501 :alert( 'You have no permissions to rename the file' ) ;break ;case 502 :alert( 'Invalid file name' + sErrorDescription ) ;break ;case 503 :alert( sErrorDescription +  'is not a file' ) ;break ;case 504 :alert( 'File not exists' + sErrorDescription  ) ;break ;default :alert( 'Error renaming file. \nError number: ' +  ' \nError description: ' + sErrorDescription ) ;break ;}
}

2。 第二步 找到这个文件 /fckeditor\editor\filemanager\browser\default\frmfolders.html 
  将函数OpenFolder(folderPath)最后一句修改为:

var agent = navigator.userAgent;if(agent.indexOf('MSIE') != -1 || agent.indexOf('Trident') != -1) {window.parent.frames['frmResourcesList'].LoadResources( oConnector.ResourceType, (folderPath) ) ;}else{window.parent.frames['frmResourcesList'].LoadResources( oConnector.ResourceType, encodeURI(folderPath) ) ;}

3。第三步,找到fckeditor\editor\filemanager\browser\default\browser.html
添加函数:

function selectBrowser(str) {var agent = navigator.userAgent;if(agent.indexOf('Gecko') != -1) {return encodeURIComponent(str);}else if(agent.indexOf('MSIE') != -1 || agent.indexOf('Trident') != -1) {return str;}else{return encodeURIComponent(str);}
}

第79行修改为: oConnector.ConnectorUrl += 'ServerPath=' + selectBrowser( sServerPath ) + '&' ;
第91行修改为: sUrl += '&CurrentFolder=' + selectBrowser( this.CurrentFolder ) ;

4。第四步 再找这个文件 \fckeditor\editor\filemanager\connectors\php\commands.php 
添加:

header('Content-Type:text/html;charset=UTF-8');
function DeleteFolder( $resourceType, $currentFolder ) {$sFolderName = $_GET['FolderName']; $sErrorMsg      = ''; $sServerDir = ServerMapFolder( $resourceType, $currentFolder . "/" . $sFolderName ,'DeleteFolder');/*if(empty($_cookie[xxxxxx])) {$sErrorNumber    = "201"; //permissions}else */ if(empty($_GET['FolderName']) or (!is_dir($sServerDir))) {$sErrorNumber    = "202";  //Invalid Folder Name.$sErrorMsg         =  $sFolderName;}else    if(!file_exists($sServerDir)) {$sErrorNumber    = "203"; // Folder not exists$sErrorMsg         =  $sFolderName;echo $sFolderName;exit();}else{if(@rmdir($sServerDir)) {$sErrorNumber = "0";//success}else{$sErrorNumber = "222";$sErrorMsg    = "目录删除失败,原因:1。目录不为空\n2。没有权限";}}echo '<Error number="' . $sErrorNumber . '" originalDescription="' . ConvertToXmlAttribute( $sErrorMsg ) . '" />' ;
}function DeleteFile( $resourceType, $currentFolder ) {$sFileName     = iconv("utf-8","gbk",$_GET['FileName']);$sErrorMsg            = "";$sServerDir = ServerMapFolder( $resourceType, $currentFolder . "/" . $sFileName ,'DeleteFile');/*if(empty($_COOKIE['hazysuser'])) {$sErrorNumber   = "301";  //Security Error.}else*/ if( empty($_GET['FileName']) or (!is_file($sServerDir))) {$sErrorNumber   = "302"; //Invalid File Name.$sErrorMsg        = $sFileName;}else if(!file_exists($sServerDir)) {$sErrorNumber   = "303"; //File not exists.$sErrorMsg        = $sFileName;}else{if(@unlink($sServerDir)) {$sErrorNumber  = "0";}else{$sErrorNumber  = "333";$sErrorMsg     = "无法删除此文件,原因:\n1。没有权限。\n2。必须在DOS下才能删除的特殊文件";}}echo '<Error number="' . $sErrorNumber . '"  originalDescription="' . ConvertToXmlAttribute( $sErrorMsg ) . '" />';
}function RenameFolder( $resourceType, $currentFolder ) {$sErrorMsg   = '';$sFolderName = urldecode(mb_convert_encoding($_GET['FolderName'],"gbk","utf-8"));$sNewName  = urldecode(mb_convert_encoding($_GET['NewName'],"gbk","utf-8"));$sServerDir  = ServerMapFolder( $resourceType, $currentFolder . "/" . $sFolderName ,'RenameFolder');$sNewDir  = ServerMapFolder( $resourceType, $currentFolder . "/" . $sNewName ,'RenameFolder' );/*if( empty($_COOKIE[xxxxxx])) {$sErrorNumber   = "401";}else */if ( empty($_GET['FolderName']) or  empty($_GET['NewName']) ) {$sErrorNumber = "402";//Invalid Folder Name.$sErrorMsg      = $sFolderName .' != '.$sNewName;/*}else if (!is_dir($sServerDir)) {$sErrorNumber = "403";  //is not Folder$sErrorMsg    = $sFolderName.' is not Folder';}else if (!file_exists($sServerDir)) {$sErrorNumber = "404";  //Folder not exists.$sErrorMsg    = $sFolderName;*/}else {if(rename($sServerDir,$sNewDir,stream_context_create() )) {$sErrorNumber = "0";}else{$sErrorNumber = "444";$sErrorMsg = "无法修改目录名称:".$sFolderName.'为'.$sNewName.'。';}}echo '<Error number="' . $sErrorNumber . '"  originalDescription="' . ConvertToXmlAttribute( $sErrorMsg ) . '" />';
}function RenameFile( $resourceType, $currentFolder ) {$sFileName = iconv("utf-8","gbk",$_GET['FileName']);$sNewName = iconv("utf-8","gbk",$_GET['NewName']);$sErrorMsg  = '';$sServerDir = ServerMapFolder( $resourceType, $currentFolder . "/" . $sFileName ,'RenameFile');$sNewDir = ServerMapFolder( $resourceType, $currentFolder . "/" . $sNewName ,'RenameFile');/*if(empty($_COOKIE[xxxxxx])) {$sErrorNumber   = "501";}else */if( empty($_GET['FileName']) or empty($_GET['NewName']) ) {$sErrorNumber  = "502";}else  if(!is_file($sServerDir)) { $sErrorNumber = '503';$sErrorMsg    = $sFileName .' is not a file';}else if(!file_exists($sServerDir)) {$sErrorNumber = '504';$sErrorMsg    = $sFileName .' is not exists';}else{if(rename($sServerDir,$sNewDir)) {$sErrorNumber    = "0";}else{$sErrorNumber    = "555";$sErrorMsg = "无法重命名此文件:".$sServerDir;}}echo '<Error number="' . $sErrorNumber . '"  originalDescription="' . ConvertToXmlAttribute( $sErrorMsg ) . '" />';
}

修改function GetFoldersAndFiles( $resourceType, $currentFolder )函数,并添加以下内容:

 $agent = $_SERVER['HTTP_USER_AGENT'];if(stripos($agent,"gecko")>0) {$currentFolder   = urldecode($currentFolder);}if(stripos($agent,"gecko")>0) { $sServerDir = iconv("utf-8","gbk",$sServerDir);
}

5。第五步 \fckeditor\editor\filemanager\connectors\php\config.php
第28行修改为:$Config['ConfigAllowedCommands'] = array('QuickUpload', 'FileUpload', 'GetFolders', 'GetFoldersAndFiles', 'CreateFolder','DeleteFolder','DeleteFile','RenameFolder','RenameFile') ;

6。第六步 \fckeditor\editor\filemanager\connectors\php\connector.php
在相应地方添加以下代码:

case "DeleteFolder":DeleteFolder( $sResourceType, $sCurrentFolder );break ;case "DeleteFile":DeleteFile( $sResourceType, $sCurrentFolder );break ;case "RenameFolder":RenameFolder( $sResourceType, $sCurrentFolder );break ;case "RenameFile":RenameFile( $sResourceType, $sCurrentFolder );break ;

7。第七步 \fckeditor\editor\filemanager\connectors\php\io.php
第70行函数function CreateServerFolder( $folderPath, $lastFolder = null )里添加:

$folderPath = iconv("utf-8","gbk",$folderPath);

8。第八步 \fckeditor\editor\filemanager\connectors\php\util.php
第50行修改为:
return (mb_convert_encoding(htmlspecialchars($value),"UTF-8","GBK")) ;

此版本为PHP版本,可以查看中文目录文件,也可以修改中文目录,但最好是简体中文。创建文件夹时要注意,此版本可以创建特殊文件夹,但不能浏览、修改、删除。由于此版本含有“删除”功能,使用者请打开权限设置。

至此,所有文件修改完毕。马上体验查看/重命名/删除上传多余文件的功能吧!!!!!!

本文以本站fckeditor_2.4.1(asp)为蓝板,精心制作而成。不存在抄袭。如有雷同,实属巧合。

[如果需要定制fckeditor的话,可联系:502251257(注明:fckeditor)]

2012-06-20删除下载:公测地址:http://gufa.xp3.biz/

转载于:https://www.cnblogs.com/false007/archive/2011/04/01/2001984.html

fckeditor文件管理器添加查看、修改、删除文件功能[php]修正下载地址相关推荐

  1. 麒麟Linux启动目录,Ubuntu Kylin优麒麟文件管理器篇:介绍,类别,结构,文件系统目录,使用...

    以下为你介绍Ubuntu Kylin优麒麟操作系统中的文件管理器知识:介绍.类别.结构.文件系统目录及文件管理器使用的内容. 一.文件管理器介绍 对于文件管理器,我们并不陌生,它是提供用户界面管理文件 ...

  2. 第十二讲 dom对象(DOM对象、document对象的常用方法、节点、查找结点、 查看/修改/删除属性节点、创建和增加节点)

    一.查看节点 getElementById( ) 元素的ID名称来访问,返回对拥有指定id的第一个对象的引用 getElementsByName( )  按元素的name名称来访问,返回带有指定名称的 ...

  3. linux文件管理器添加项目,LXQt 0.14 发布,文件管理器添加拆分视图

    LXQt团队已经发布了他们的轻量级Qt5支持的Linux桌面环境的0.14.0版本. LXQt 0.14为PCManFM-Qt文件管理器添加了一个拆分视图,其桌面图标角色现在支持计算机/网络/垃圾箱图 ...

  4. CFF Explorer 查看/修改PE文件资源

    CFF Explorer 查看/修改PE文件资源 本文摘录于:https://www.jb51.net/softjc/514548.html这里只是做学习备份之用,绝无抄袭之意,如果作者觉得有所不妥请 ...

  5. 查看 修改自己电脑下NPM的镜像地址

    查看 && 修改自己电脑下NPM的镜像地址 查看当前镜像地址 修改为淘宝镜像 修改为原生镜像 查看当前镜像地址 npm get registry 修改为淘宝镜像 npm config ...

  6. 菜鸟喜欢的C# 入门认识和添加,修改,删除 文件夹 文件 大全(转)

    基本认识的四个要点: 1.C#中一切皆对象,int.string其实都是对象,你的main()函数也需要放在一个特定的对象中,才可执行,所以main()会被放进Program.cs(叫其它名称也可以) ...

  7. cmd 命令操纵文件管理器、创建(删除)多级文件夹

    命令行打开文件夹窗口的六种方法 1. 使用 start 命令 # 打开指定文件夹 > start 路径# 打开当前文件夹 > start .# 打开含空格文件夹 > start &q ...

  8. 将文件复制到ftp发生错误 请检查是否有权限_SE文件管理器2.8.6解锁完整功能版...

    飞鱼资源部落 [特别声明]所有软件皆来源于网上收集整理,仅供学习与交流技术,不得用作其它用途,如有侵犯你的权益,请联系我们,我们将于24小时内进行删除,谢谢你的配合! 1 SE文件管理器是一款专业的手 ...

  9. 计算机管理器用户怎么打开文件,电脑文件管理器怎么打开文件夹 文件管理器打开想要的文件夹方法-电脑教程...

    电脑文件管理器怎么打开文件夹?当我们在Win10中打开任务栏中文件管理器时,默认只有2个位置:此电脑和快速访问.前者指向传统的磁盘盘符界面,而后者就是Win10新增的那6个大家不怎么使用的固定默认文件 ...

最新文章

  1. QT textedit 滚动条自动往下滚动
  2. php 清空输入缓存,用PHP清理用户输入的最佳方法是什么?
  3. 一起播四个视频的AVS脚本
  4. c#中mysql远程连接方法及实例
  5. 根据数组建立平衡二叉搜索树
  6. Linux系统重置和修改root密码
  7. 【HeadFirst设计模式——开篇】
  8. RMAN数据库恢复 之归档模式有(无)备份-丢失数据文件的恢复
  9. 内存模型以及分区,需要详细到每个区放什么
  10. psm倾向得分匹配法举例_倾向得分匹配法的详细解读
  11. APR-服务器端编程
  12. 怎么样锁定计算机时间,电脑屏幕锁屏设置时间还是锁不了怎么办
  13. ggplot绘图之基本语法
  14. splits——安卓gradle
  15. Linux文件加密系统-eCryptfs
  16. 求和计算机教案,七年级信息技术《Excel求和》教学设计
  17. 什么是DDOS流量攻击,DDoS防护手段
  18. python 画ks曲线_Python绘制KS曲线的实现方法
  19. bash shell 数组元素遍历操作 foreach
  20. javaee入门笔记2

热门文章

  1. matlab 获取系统时间now,date
  2. Java新手造假_老板居然让我在Java项目中“造假”
  3. linux下删除乱码文件名的方法
  4. php while结束循环吗,php while循环退不出是什么有关问题
  5. linux多进程 段错误,关于段错误
  6. Java注释 link_Java 文档注释
  7. mysql运算结果放入表中_MySQL表1新增数据,计算开始、结束日期之间所有时间,插入到表2中...
  8. linux prelink.cache,Linux基础操作
  9. qt linux opensource ,QT opensource embedded linux 编…
  10. 会计用计算机很快是,40个超实用电脑快捷键,老会计都在用