由于ueditor官方提供了 php的接口,所以很多人都是直接使用他自带的那个了,但是如果要用到thinkphp我们自己开发的上传接口,则官方没有给出更多的解决方案,
解决方法:
(1)自己封装一个上传类:ueditor.php
- class Ueditor extends Base{
- // 优先加载
- protected function initialize() {
- parent::initialize();
- $this->attachmentModel = new AttachmentModel;
- $this->configModel = new ConfigModel;
- $this->config =$this->configModel->getConfig('upload');
- $this->config['max_size'] = $this->config['max_size'] * 1024;
- $this->config['allow_ext'] = str_replace('|',',',$this->config['allow_ext']);
- }
- // 编辑器内上传图片
- private $stateMap = array(
- 'SUCCESS', //上传成功标记,在UEditor中内不可改变,否则flash判断会出错
- '文件大小超出 upload_max_filesize 限制',
- '文件大小超出 MAX_FILE_SIZE 限制',
- '文件未被完整上传',
- '没有文件被上传',
- '上传文件为空',
- 'ERROR_TMP_FILE' => '临时文件错误',
- 'ERROR_TMP_FILE_NOT_FOUND' => '找不到临时文件',
- 'ERROR_SIZE_EXCEED' => '文件大小超出网站限制',
- 'ERROR_TYPE_NOT_ALLOWED' => '文件类型不允许',
- 'ERROR_CREATE_DIR' => '目录创建失败',
- 'ERROR_DIR_NOT_WRITEABLE' => '目录没有写权限',
- 'ERROR_FILE_MOVE' => '文件保存时出错',
- 'ERROR_FILE_NOT_FOUND' => '找不到上传文件',
- 'ERROR_WRITE_CONTENT' => '写入文件内容错误',
- 'ERROR_UNKNOWN' => '未知错误',
- 'ERROR_DEAD_LINK' => '链接不可用',
- 'ERROR_HTTP_LINK' => '链接不是http链接',
- 'ERROR_HTTP_CONTENTTYPE' => '链接contentType不正确',
- 'INVALID_URL' => '非法 URL',
- 'INVALID_IP' => '非法 IP'
- );
- // Ueditor 方法 Controller.php,初始化
- public function doupload() {
- date_default_timezone_set('Asia/chongqing');
- error_reporting(E_ERROR);
- header('Content-Type: text/html; charset=utf-8');
- $CONFIG = json_decode(preg_replace('/\/\*[\s\S]+?\*\//', '', file_get_contents(PUBLIC_PATH.'/static/common/ueditor/ueditor.config.js')), true);
- $action = input('param.action');
- $uploadfile = ROOT_PATH . 'upload' . DS . 'image';
- switch ($action) {
- case 'config':
- $result = json_encode($CONFIG);
- break;
- /* 上传图片 */
- case 'uploadimage':
- $result = $this->upload_image($uploadfile);
- break;
- /* 上传涂鸦 */
- case 'uploadscrawl':
- /* 上传视频 */
- case 'uploadvideo':
- /* 上传文件 */
- case 'uploadfile':
- //$result = include("action_upload.php");
- break;
- /* 列出图片 */
- case 'listimage':
- //$result = include("action_list.php");
- break;
- /* 列出文件 */
- case 'listfile':
- //$result = include("action_list.php");
- break;
- /* 抓取远程文件 */
- case 'catchimage':
- //$result = $this -> get_remote_image($mySavePath);
- 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 upload_image($uploadfile) {
- //您的图片上传方法
- }
- }
2、在需要用到富文本编辑器的地方添加js代码:
- <script src="/public/static/common/ueditor/ueditor.config.js"></script>
- <script src="/public/static/common/ueditor/ueditor.all.min.js"></script>
- <script>
- UE.Editor.prototype._bkGetActionUrl = UE.Editor.prototype.getActionUrl;
- UE.Editor.prototype.getActionUrl = function(action) {
- if (action == "uploadimage") { //上传图片
- return "{url('admin/ueditor/doupload',['action'=>'uploadimage'])}";
- } else if(action == "config") { //加载配置
- return this._bkGetActionUrl.call(this, action);
- }
- }
- var ue = UE.getEditor("editor_content",{
- autoHeightEnabled: false, //禁止自动长高
- autoFloatEnabled:false, //禁止工具条漂浮
- });
- </script
刷新即可,不需要去专门配置ueditor.config.js里边的url了
效果:
文章点评