当用户有特殊要求时,程序员不得不研究 Ewebeditor 的代码,相当麻烦。我就是经历过这个过程终于实现了客户的一个要求:网页上在某些文字后面做一个链接,用户点击后出现一个图片或一个详细介绍或一段视频。考虑到网页上只显示某些文字,我设置了这样的一个功能:上传时将文件名该为要显示的某些文字,上传时我们可以截取那些文字(去掉文件类型)。考虑到管理员删除时要将 Ewebeditor 上传的文件也删除,我们必须将文件的路径提取出来并把它们存入数据库;并且每一次有可能上传多个文件,我们必须把多个文件的路径都读出来并且要存入到数据库表格的一个字段中,所以我把路径写入到 $_SESSION 中,然后在另外一个页面将文件的路径进行处理。
1. 首先要赋给 uploadfile 权限,使这个文件夹能被写入和读出。
2.include/upload.php
复制代码 代码如下:
// 保存操作
function DoSave()
{
global $sContentPath,$sSaveFileName,$sOriginalFileName;
DoUpload();
$sPathFileName = $sContentPath . $sSaveFileName;
$pathnum = count( $_SESSION["ewebpath"] );
$_SESSION["ewebpath"]["$pathnum"] = $sPathFileName;
// 获取 eweb 上传的文件的路径,并且把每次上传的文件的路径写入 session , 在另一个页面得到路径后写入数据库
/*$path = array();
$pathnum = count( $_SESSION["ewebpath"] );
for( $i=0; $i<$pathnum; $i++ )
{
$path[$i] = $_SESSION["ewebpath"][$i];
$path[$i] = substr( $path[$i], 8 ); // 此处哟啊根据实际情况对路径进行处理
}
$path = implode( '|', $path );
session_unregister( "ewebpath" );*/
OutScript("parent.UploadSaved('$sPathFileName');var obj=parent.dialogArguments.dialogArguments;if (!obj) obj=parent.dialogArguments;try{obj.addUploadFile('$sOriginalFileName', '$sSaveFileName', '$sPathFileName');} catch(e){}");
}
3.startup.php 中修改 ewebeditor 支持的上传文件的格式。
4.dialog/file.htm
复制代码 代码如下:
// 取文件名到隐藏的输入框
function GetFileName(url, opt)
{
d_filename.value=url.substr(url.lastIndexOf(opt)+1);
// 取不带后缀的文件名(如 “ 信号与系统 .doc” 将得到 “ 信号与系统 ” )
s1=d_filename.value.split(".");// 分割字符串
d_filename.value=s1[0];
}