搜索
系统检测到您的用户名不符合规范:

Thinkphp 3.2.3集成百度编辑器(UEditor)

浏览:15947 发布日期:2015年08月19日 分类:技术分享
前两天刚集成好,我说下我的做法吧
1、把百度编辑器放到项目的Public目录下 命名为:UEditor
2、在ThinkPHP/Library/Think/Template/Taglib 目录下编辑 Html.class.php 加上下面的代码: switch(strtoupper($type)) {
case 'FCKEDITOR':
//.......
break;
case 'FCKMINI':
//.......
break;
case 'EWEBEDITOR':
//.......
break;
case 'NETEASE':
//.......
break;
case 'UBB':
//.......
break;
case 'KINDEDITOR':
//.......
break;
case 'UEDITOR':
$parseStr = "\n".'<script type="text/javascript" charset="utf-8" src="__ROOT__/Public/UEditor/ueditor.config.js"></script>'."\n".'<script type="text/javascript" charset="utf-8" src="__ROOT__/Public/UEditor/ueditor.all.js"></script>'."\n".'<script type="text/plain" id="'.$id.'" name="'.$name.'" style="'.$style.'">'.$content.'</script>'."\n".'<script type="text/javascript">var ue_'.$id.' = UE.getEditor("'.$id.'");</script>'."\n";
break;
//.......
3、在需要用到编辑器的模板head内加上: <taglib name="html" />在用到编辑器的地方加上:<html:editor id="info" name="info" type="UEDITOR" >{$info.info}</html:editor>4、在百度编辑器目录的ueditor.config.js文件内修改: // 服务器统一请求接口路径
, serverUrl: URL + "../../index.php/Home/Index/ueditup"
5、就是你需要的用TP自带上传类处理上传了,在Home模块的Index控制器里加上下面的方法: public function ueditup(){
header("Content-Type: text/html; charset=utf-8");
$editconfig = json_decode(preg_replace("/\/\*[\s\S]+?\*\//", "", file_get_contents(COMMON_PATH."Conf/ueditconfig.json")), true);
//dump($editconfig);
$action = I('get.action');
//echo $action;
switch ($action) {
case 'config':
$result = json_encode($editconfig);
break;

/* 上传图片 */
case 'uploadimage':
$result = $this->editup('img');
break;
/* 上传涂鸦 */
case 'uploadscrawl':
$result = $this->editup('img');
break;
case 'uploadvideo':
$result = $this->editup('video');
break;
case 'uploadfile':
$result = $this->editup('file');
//$result = include("action_upload.php");
break;

/* 列出图片 */
case 'listimage':
$result = $this->editlist('listimg');
break;
/* 列出文件 */
case 'listfile':
$result = $this->editlist('listfile');
break;

/* 抓取远程文件 */
case 'catchimage':
//$result = include("action_crawler.php");
break;

default:
$result = json_encode(array(
'state'=> '请求地址出错'
));
break;
}

/* 输出结果 */
if (isset($_GET["callback"])) {
if (preg_match("/^[\w_]+$/", $_GET["callback"])) {
echo htmlspecialchars($_GET["callback"]) . '(' . $result . ')';
} else {
echo json_encode(array(
'state'=> 'callback参数不合法'
));
}
} else {
echo $result;
}

}


public function editup($uptype){
if($this->islogin==false){
$_re_data['state'] = '请登陆';
return json_encode($_re_data);
}
$editconfig = json_decode(preg_replace("/\/\*[\s\S]+?\*\//", "", file_get_contents(COMMON_PATH."Conf/ueditconfig.json")), true);
switch ($uptype) {
case 'img':
$upload = new \Think\Upload();// 实例化上传类
$upload->rootPath = '.';
$upload->maxSize = $editconfig['imageMaxSize'];
$upload->exts = explode('.', trim(join('',$editconfig['imageAllowFiles']),'.'));
$upload->savePath = $editconfig['imagePathFormat'];
$upload->saveName = time().rand(100000,999999);
$info = $upload->uploadOne($_FILES[$editconfig['imageFieldName']]);
break;
case 'file':
$upload = new \Think\Upload();// 实例化上传类
$upload->rootPath = '.';
$upload->maxSize = $editconfig['fileMaxSize'];
$upload->exts = explode('.', trim(join('',$editconfig['fileAllowFiles']),'.'));
$upload->savePath = $editconfig['filePathFormat'];
$upload->saveName = time().rand(100000,999999);
$info = $upload->uploadOne($_FILES[$editconfig['fileFieldName']]);
break;
case 'video':
$upload = new \Think\Upload();// 实例化上传类
$upload->rootPath = '.';
$upload->maxSize = $editconfig['videoMaxSize'];
$upload->exts = explode('.', trim(join('',$editconfig['videoAllowFiles']),'.'));
$upload->savePath = $editconfig['videoPathFormat'];
$upload->saveName = time().rand(100000,999999);
$info = $upload->uploadOne($_FILES[$editconfig['videoFieldName']]);
break;
default:
return false;
break;
}

if(!$info) {// 上传错误提示错误信息
$_re_data['state'] = $upload->getError();
$_re_data['url'] = '';
$_re_data['title'] = '';
$_re_data['original'] = '';
$_re_data['type'] = '';
$_re_data['size'] = '';
}else{// 上传成功 获取上传文件信息
$_re_data['state'] = 'SUCCESS';
$_re_data['url'] = $info['savepath'].$info['savename'];
$_re_data['title'] = $info['savename'];
$_re_data['original'] = $info['name'];
$_re_data['type'] = '.'.$info['ext'];
$_re_data['size'] = $info['size'];
}

return json_encode($_re_data);

}

public function editlist($listtype){
$editconfig = json_decode(preg_replace("/\/\*[\s\S]+?\*\//", "", file_get_contents(COMMON_PATH."Conf/ueditconfig.json")), true);
switch ($listtype) {
case 'listimg':
$allowFiles = $editconfig['imageManagerAllowFiles'];
$listSize = $editconfig['imageManagerListSize'];
$path = $editconfig['imageManagerListPath'];
break;

case 'listfile':
$allowFiles = $editconfig['fileManagerAllowFiles'];
$listSize = $editconfig['fileManagerListSize'];
$path = $editconfig['fileManagerListPath'];
break;

default:
return false;
break;
}
/* 获取参数 */
$size = isset($_GET['size']) ? htmlspecialchars($_GET['size']) : $listSize;
$start = isset($_GET['start']) ? htmlspecialchars($_GET['start']) : 0;
$end = $start + $size;

/* 获取文件列表 */
$path = $_SERVER['DOCUMENT_ROOT'] . (substr($path, 0, 1) == "/" ? "":"/") . $path;

$files = $this->getfiles($path, $allowFiles);

if (!count($files)) {
return json_encode(array(
"state" => "no match file",
"list" => array(),
"start" => $start,
"total" => count($files)
));
}

/* 获取指定范围的列表 */
$len = count($files);
for ($i = min($end, $len) - 1, $list = array(); $i < $len && $i >= 0 && $i >= $start; $i--){
$list[] = $files[$i];
}
//倒序
//for ($i = $end, $list = array(); $i < $len && $i < $end; $i++){
// $list[] = $files[$i];
//}

/* 返回数据 */
$result = json_encode(array(
"state" => "SUCCESS",
"list" => $list,
"start" => $start,
"total" => count($files)
));

return $result;

}
/**
* 遍历获取目录下的指定类型的文件
* @param $path
* @param array $files
* @return array
*/
public function getfiles($path, $allowFiles, &$files = array())
{
if (!is_dir($path)) return null;

if(substr($path, strlen($path) - 1) != '/') $path .= '/';
$handle = opendir($path);

while (false !== ($file = readdir($handle))) {
if ($file != '.' && $file != '..') {
$path2 = $path . $file;
if (is_dir($path2)) {
$this->getfiles($path2, $allowFiles, $files);
} else {
if(in_array('.'.pathinfo($file, PATHINFO_EXTENSION), $allowFiles)){

$files[] = array(
'url'=> substr($path2, strlen($_SERVER['DOCUMENT_ROOT'])),
'mtime'=> filemtime($path2)
);
}
}
}
}
return $files;
}
记得把 ueditconfig.json这个文件放到配置文件目录下也就是Home/Conf/这个目录下
这个文件的内容如下:/* 前后端通信相关的配置,注释只允许使用多行方式 */
{
/* 上传图片配置项 */
"imageActionName": "uploadimage", /* 执行上传图片的action名称 */
"imageFieldName": "upfile", /* 提交的图片表单名称 */
"imageMaxSize": 2048000, /* 上传大小限制,单位B */
"imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 上传图片格式显示 */
"imageCompressEnable": true, /* 是否压缩图片,默认是true */
"imageCompressBorder": 1600, /* 图片压缩最长边限制 */
"imageInsertAlign": "none", /* 插入的图片浮动方式 */
"imageUrlPrefix": "", /* 图片访问路径前缀 */
/* "imagePathFormat": "/Uploads/editor/image/{time}{rand:6}", */
"imagePathFormat": "/Uploads/editor/image/", /* 上传保存路径,可以自定义保存路径和文件名格式 */

/* 涂鸦图片上传配置项 */
"scrawlActionName": "uploadscrawl", /* 执行上传涂鸦的action名称 */
"scrawlFieldName": "upfile", /* 提交的图片表单名称 */
"scrawlPathFormat": "/Uploads/editor/image/", /* 上传保存路径,可以自定义保存路径和文件名格式 */
"scrawlMaxSize": 2048000, /* 上传大小限制,单位B */
"scrawlUrlPrefix": "", /* 图片访问路径前缀 */
"scrawlInsertAlign": "none",

/* 截图工具上传 */
"snapscreenActionName": "uploadimage", /* 执行上传截图的action名称 */
"snapscreenPathFormat": "/Uploads/editor/image/", /* 上传保存路径,可以自定义保存路径和文件名格式 */
"snapscreenUrlPrefix": "", /* 图片访问路径前缀 */
"snapscreenInsertAlign": "none", /* 插入的图片浮动方式 */

/* 抓取远程图片配置 */
"catcherLocalDomain": ["127.0.0.1", "localhost", "img.baidu.com"],
"catcherActionName": "catchimage", /* 执行抓取远程图片的action名称 */
"catcherFieldName": "source", /* 提交的图片列表表单名称 */
"catcherPathFormat": "/Uploads/editor/image/", /* 上传保存路径,可以自定义保存路径和文件名格式 */
"catcherUrlPrefix": "", /* 图片访问路径前缀 */
"catcherMaxSize": 2048000, /* 上传大小限制,单位B */
"catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取图片格式显示 */

/* 上传视频配置 */
"videoActionName": "uploadvideo", /* 执行上传视频的action名称 */
"videoFieldName": "upfile", /* 提交的视频表单名称 */
"videoPathFormat": "/Uploads/editor/video/", /* 上传保存路径,可以自定义保存路径和文件名格式 */
"videoUrlPrefix": "", /* 视频访问路径前缀 */
"videoMaxSize": 102400000, /* 上传大小限制,单位B,默认100MB */
"videoAllowFiles": [
".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid"], /* 上传视频格式显示 */

/* 上传文件配置 */
"fileActionName": "uploadfile", /* controller里,执行上传视频的action名称 */
"fileFieldName": "upfile", /* 提交的文件表单名称 */
"filePathFormat": "/Uploads/editor/file/", /* 上传保存路径,可以自定义保存路径和文件名格式 */
"fileUrlPrefix": "", /* 文件访问路径前缀 */
"fileMaxSize": 51200000, /* 上传大小限制,单位B,默认50MB */
"fileAllowFiles": [
".png", ".jpg", ".jpeg", ".gif", ".bmp",
".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid",
".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso",
".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml"
], /* 上传文件格式显示 */

/* 列出指定目录下的图片 */
"imageManagerActionName": "listimage", /* 执行图片管理的action名称 */
"imageManagerListPath": "/Uploads/editor/image/", /* 指定要列出图片的目录 */
"imageManagerListSize": 1000, /* 每次列出文件数量 */
"imageManagerUrlPrefix": "", /* 图片访问路径前缀 */
"imageManagerInsertAlign": "none", /* 插入的图片浮动方式 */
"imageManagerAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 列出的文件类型 */

/* 列出指定目录下的文件 */
"fileManagerActionName": "listfile", /* 执行文件管理的action名称 */
"fileManagerListPath": "/Uploads/editor/file/", /* 指定要列出文件的目录 */
"fileManagerUrlPrefix": "", /* 文件访问路径前缀 */
"fileManagerListSize": 1000, /* 每次列出文件数量 */
"fileManagerAllowFiles": [
".png", ".jpg", ".jpeg", ".gif", ".bmp",
".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg",
".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid",
".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso",
".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml"
] /* 列出的文件类型 */

}
差不多就这样了,这点点东西花了我大半天来集成

附件太大,上传不了,到这里下载吧

http://pan.baidu.com/s/1sjJuE6p
最佳答案
评论() 相关
后面还有条评论,
评论支持使用[code][/code]标签添加代码
您需要登录后才可以评论 登录 | 立即注册
收藏
256kb
积分:478 等级:LV2
热点推荐
(追記) (追記ここまで)
最新更新

我们

合作

网站

信息

ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。

AltStyle によって変換されたページ (->オリジナル) /