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%'> <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> </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>";
}
?>