Fckeditor 文件删除和中文乱码解决方法

1.上传文件名中文乱码问题:
  打开 
  editor/filemanager/upload/php/upload.php 和 
  editor/filemanager/browser/default/connectors/php/commands.php 找到
  $sFileName = $oFile['name'] ;
  修改为
  $sOriginalFileName = $sFileName;
  $sExtension = substr($sFileName,(strrpos($sFileName,'.')+1));
  $sExtension = strtolower($sExtension);
  $sFileName = date("YmdHis").rand(100,200).".".$sExtension;
  注:万一在服务器上中文文件名并非乱码,如果你只是为了在浏览的时候让编辑器显示该类文件名,那你可以作如下修改:
     打开:editor/filemanager/browser/default/connectors/php/util.php 修改 ConvertToXmlAttribute函数,将:
     return utf8_encode(htmlspecialchars($value)); 改为:
     return iconv("GBK","UTF-8",htmlspecialchars($value));
     这样编辑器就可以正常显示中文名,不过强烈建议你修改上传文件的命名,中文可能存在诸多的不便

2.上传文件删除功能
  修改:fckeditor/editor/filemanager/browser/default/frmresourceslist.html
  在body区域增加如下代码:
  <div id="showFile" style="float:left; display:none; background-color:#999999"></div>//作用是当鼠标移到所上传的文件时显示其相关信息
  <iframe id="iframe_del" name="iframe_del" width="0" height="0" scrolling="no"></iframe>//作用是供我们删除上传文件时做动作响应窗口,即是将删除动作在iframe中运行,目的是实现伪无刷新删除效果
  <div id="body_content"></div>//作用是显示上传文件及文件夹列表
  (1) 在js代码区域中加入:

Code
//显示文件显示层
function showDiv(fileUrl)
{
 
var name = fileUrl;
 
//获取文件类型
 var suffix = name.substring(name.lastIndexOf(".")+1);
 
var div = document.getElementById("showFile");
 div.content 
= "";
 div.style.position 
= "absolute";
 div.content 
+= "<table width='256' border='0' cellpadding='3' cellspacing='1' bgcolor='#737357'><tbody><tr><td height='23' align='left' bgcolor='#c7c78f'><table width='100%' height='100%' border='0' cellpadding='0' cellspacing='0'><tbody><tr><td width='47%'>&nbsp;<a href='javascript:' onClick='hiddenDiv();'><font color='#000000' style='text-decoration:none;'>关闭</font></a></td><td width='53%' align='right'><a href='javascript:' onClick='delFile(\""+fileUrl+"\");'><font color='#000000' style='text-decoration:none;'>删除</font></a>&nbsp;</td></tr></tbody></table></td></tr>";
 
if(suffix == 'gif' || suffix == 'jpg' || suffix == 'jpeg' || suffix == 'bmp' || suffix == 'png'){
  div.content 
+= "<tr><td align='center' bgcolor='#c7c78f'><img src='"+fileUrl+"' onload='if(this.width>250) this.width='250' style='margin:3px;'></td></tr>'";
 }
else{
  div.content 
+= "<tr><td height='35' align='center' bgcolor='#c7c78f'><strong>该类型不能预览</strong></td></tr>";
 }
 div.content 
+="</tbody></table>";
 div.innerHTML 
= div.content;
 div.style.display 
="";
 div.style.top 
= event.y+document.body.scrollTop+10;
 div.style.left
= event.x+document.body.scrollLeft+30;
}
//隐藏文件显示层
function hiddenDiv()
{
 
var div = document.getElementById("showFile");
 div.style.display
="none";
}
//在iframe中删除文件
function delFile(fileUrl)
{
 
if(!confirm('你确定删除该文件?'))
 
return;
 
var url = 'del_file.php?filePath='+fileUrl;
 window.open(url,
"iframe_del");
 Refresh();
}

  (2)  修改本页面原有js
 

Code
oListManager.Clear = function()
  {
 
//document.body.innerHTML = '' ;原有
 hiddenDiv();//修改的
 document.getElementById("body_content").innerHTML = "";//修改的
  }

  
//var sLink = '<a href="#" onclick="OpenFile(\'' + fileUrl.replace( /'/g, '\\\'') + '\');return false;">' ;//原有
  var sLink = '<a href="#" onmouseover="showDiv(\''+fileUrl+'\');" onclick="OpenFile(\''+fileUrl.replace(/'/g,'\\\'')+'\'); return false;">';//修改后

  
function Refresh()
  {
 
//LoadResources( oConnector.ResourceType, oConnector.CurrentFolder ) ;//原有
 hiddenDiv();//所作修改,为了刷新列表时默认隐藏文件显示层
 LoadResources( oConnector.ResourceType, oConnector.CurrentFolder );
  }

  修改函数:GetFoldersAndFilesCallBack 找到:
  
//document.body.innerHTML = oHtml.ToString() ;//原有
  document.getElementById("body_content").innerHTML = oHtml.ToString() ;//修改后

3.最后,增加一个文件删除页面del_file.php(该文件路径和增加的JS函数delFile(fileUrl)中的调用一致),作用为删除文件,给出成功与否的操作提示,参考代码:

Code
<?php
@header(
"Content-Type: text/html; charset=utf-8");
$filePath 
= trim($_GET['filePath']);
if($filePath){
 @unlink($filePath);
 echo 
"<script>alert('删除成功')</script>";
}
else{
 echo 
"<script>alert('删除错误,可能文件不存在或者已经删除')</script>";
}
?>

 

你可能感兴趣的:(Fckeditor 文件删除和中文乱码解决方法)