CI框架整合UEditor编辑器上传功能

最近项目中要使用到富文本编辑器,选用了功能强大的UEditor,接下来就来讲讲UEditor编辑器的上传功能整合。

本文UEditor版本:ueditor1_4_3_utf8_php版本

第一步:部署编辑器

HTML代码:

1  <textarea id="editor" class="editor" type="text/plain" style="width:100%;height:500px;"></textarea>

JavaScript代码:

 1 $(document).ready(function () {
 2         var ue = UE.getEditor(‘editor‘,{
 3             serverUrl:‘/ueditorup/unifiedRequest/‘,//后台统一请求路径
 4             autoHeightEnabled:false,
 5             toolbars:
 6                 [[
 7                 ‘fullscreen‘, ‘source‘, ‘|‘, ‘undo‘, ‘redo‘, ‘|‘,
 8             ‘bold‘, ‘italic‘, ‘underline‘, ‘fontborder‘, ‘strikethrough‘, ‘superscript‘, ‘subscript‘, ‘removeformat‘, ‘formatmatch‘, ‘autotypeset‘, ‘blockquote‘, ‘pasteplain‘, ‘|‘, ‘forecolor‘, ‘backcolor‘, ‘insertorderedlist‘, ‘insertunorderedlist‘, ‘selectall‘, ‘cleardoc‘, ‘|‘,
 9             ‘rowspacingtop‘, ‘rowspacingbottom‘, ‘lineheight‘, ‘|‘,
10             ‘customstyle‘, ‘paragraph‘, ‘fontfamily‘, ‘fontsize‘, ‘|‘,
11             ‘directionalityltr‘, ‘directionalityrtl‘, ‘indent‘, ‘|‘,
12             ‘justifyleft‘, ‘justifycenter‘, ‘justifyright‘, ‘justifyjustify‘, ‘|‘, ‘touppercase‘, ‘tolowercase‘, ‘|‘,
13             ‘link‘, ‘unlink‘, ‘anchor‘, ‘|‘, ‘imagenone‘, ‘imageleft‘, ‘imageright‘, ‘imagecenter‘, ‘|‘,
14             ‘simpleupload‘, ‘insertimage‘, ‘emotion‘, ‘scrawl‘, ‘insertvideo‘, ‘music‘, ‘attachment‘, ‘map‘, ‘gmap‘, ‘insertframe‘, ‘insertcode‘, ‘pagebreak‘, ‘template‘, ‘background‘, ‘|‘,
15             ‘horizontal‘, ‘date‘, ‘time‘, ‘spechars‘, ‘|‘,
16             ‘inserttable‘, ‘deletetable‘, ‘insertparagraphbeforetable‘, ‘insertrow‘, ‘deleterow‘, ‘insertcol‘, ‘deletecol‘, ‘mergecells‘, ‘mergeright‘, ‘mergedown‘, ‘splittocells‘, ‘splittorows‘, ‘splittocols‘, ‘charts‘, ‘|‘,
17             ‘print‘, ‘preview‘, ‘searchreplace‘, ‘help‘, ‘drafts‘
18             ]],
19         });

第二步:服务端整合

前端代码部署完,现在页面已经可以正常显示百度编辑器的编辑框了,接下来就是本文要介绍的上传功能的整合。

首先在CI框架的controllers目录下创建名为ueditorup的.php文件并在此文件创建同名的类(UeditorUp),百度编辑器的所有上传功能都将在这个类里实现(图片、涂鸦、视频,附件上传)。

下面代码中的上传处理类MyUploader 就是UEditor中的Uploader.class.php文件,这里为了与前端编辑器上传功能完美衔接使用了UEditor自带的Uploader.class.php文件而没有使用CI框架的上传处理功能(本人对UEditor不是很熟悉),不过为了让上传更加安全,增加了上传文件的MIME类型判断,判断代码就直接来自CI框架的上传类,配置都放在mimeconfig.php配置文件中。

而配置文件uploadconfig则是UEditor编辑器的config.json文件配置,只是把json格式改成了CI的数组格式。

UEditor编辑器个服务器交互都是通过统一请求地址进行访问的,同时会通过GET方法提交action的值,服务器端则通过action的值判断具体的处理方法。

<?php//ueditorup.php
class UeditorUp extends MY_Controller
{
    function __construct()
    {
        parent::__construct();
    }

    /**
     * 百度编辑器唯一请求接口
     * @throws Exception
     */
    public function unifiedRequest ()
        {
        try
        {
            $action = $this->input->get(‘action‘);
            $this->config->load(‘uploadconfig‘);//获取上传配置
            $config = $this->config->item(‘ueditor_upload‘);
            if(empty($config))
                throw new Exception(errorLang(‘62409‘));if($action == ‘config‘)
            {
                echo json_encode($config);
            }elseif(method_exists($this, $action))
            {
                $this->config->load(‘mimeconfig‘);
                $config[‘mimeType‘] = $this->config->item(‘mime_type_conf‘);
                $result = $this->{$action}($config);
                echo json_encode($result);        }else
                throw new Exception(errorLang(‘62409‘));
        }
        catch (Exception $e)
        {
            echo json_encode(array(‘state‘=>$e->getMessage()));
        }
    }

    /**
     * 图片上传处理方法
     * @param array $config
     */
    public function imageUpload ($config)
    {
        $this->load->library(‘MyUploader‘);
        $config = $this->setConf($config, ‘image‘);
        $this->myuploader->do_load($config[‘imageFieldName‘], $config);
        return $this->myuploader->getFileInfo();
    }
     /**
      * 视频上传处理方法
      * @param array $config
      */
     public function videoUpload ($config)
     {
         $this->load->library(‘MyUploader‘);
         $config = $this->setConf($config, ‘video‘);
         $this->myuploader->do_load($config[‘videoFieldName‘], $config);
         return $this->myuploader->getFileInfo();
     }
    /**
     * 附件上传处理方法
     * @param array $config
     */
    public function filesUpload ($config)
    {
        $this->load->library(‘MyUploader‘);
        $config = $this->setConf($config, ‘file‘);
        $this->myuploader->do_load($config[‘fileFieldName‘], $config);
        return $this->myuploader->getFileInfo();
    }
    /**
     * 涂鸦图片上传处理方法
     * @param unknown $config
     */
    public function scrawlUpload ($config)
    {
        $this->load->library(‘MyUploader‘);
        $config = $this->setConf($config, ‘scrawl‘, ‘scrawl.png‘);
        $this->myuploader->do_load($config[‘scrawlFieldName‘], $config, ‘base64‘);
        return $this->myuploader->getFileInfo();
    }

    /**
     * 设置config
     * @param array     $config
     * @param string    $prefix
     * @param string    $oriName
     * @return array
     */
    private function setConf (array $config, $prefix, $oriName=NULL)
    {
        $config[‘maxSize‘]       =    array_key_exists($prefix.‘MaxSize‘, $config) ? $config[$prefix.‘MaxSize‘] : $config[‘fileMaxSize‘];
        $config[‘allowFiles‘]    =    array_key_exists($prefix.‘AllowFiles‘, $config) ? $config[$prefix.‘AllowFiles‘] : $config[‘fileAllowFiles‘];
        $config[‘pathFormat‘]    =    array_key_exists($prefix.‘PathFormat‘, $config) ? $config[$prefix.‘PathFormat‘] : $config[‘filePathFormat‘];
        empty($oriName) || $config[‘oriName‘] = $oriName;
        return $config;
    }

}

下面是修改后的MyUploader上传类的文件后缀获取方法。

  /**   * MyUploader.php
     * 获取文件扩展名(MIME)
     * @return string
     */
    private function getFileExt()
    {
            $regexp = ‘/^([a-z\-]+\/[a-z0-9\-\.\+]+)(;\s.+)?$/‘;
            if (function_exists(‘finfo_file‘))
            {
                $finfo = finfo_open(FILEINFO_MIME);
                if (is_resource($finfo))
                {
                    $mime = @finfo_file($finfo, $this->file[‘tmp_name‘]);
                    finfo_close($finfo);
                    if (is_string($mime) && preg_match($regexp, $mime, $matches))
                    {
                        if(array_key_exists($matches[1], $this->config[‘mimeType‘]))
                        {
                            $type = $this->config[‘mimeType‘][$matches[1]];
                            return $type;
                        }
                    }
                }
            }
        return FALSE;
    }

到此CI框架整合UEditor编辑器就算完成了。

*注意:在整合上传功能的时候,要开启文件保存目录的读写权限。

时间: 2024-10-06 17:05:59

CI框架整合UEditor编辑器上传功能的相关文章

CI框架学习之文件上传功能

在控制器中添加一个upload.php文件,代码如下 <?php class Upload extends CI_Controller{ public function index(){ $this->load->view('up'); } public function up(){ if(!empty($_POST['sub'])){ $file=$_FILES['upfile']; if($file['size']>=200000000){ echo "文件容量超出限

django下的ckeditor 5.0 文本编辑器上传功能。

完整的后台界面怎么可以没有文本编辑器,但是django的admin界面很疑惑,没有自带文本编辑器,好在网上有不少成型的库可以用 我用的是ckeditor编辑器,安装和配置我引用别人的博客 这篇博客配置讲的很详细,之后就可以用RichTextField来定义模型,后台默认就是文本编辑器. 但是问题来了,文本编辑器是没有上传图片的功能,只能贴链接. 网上以前有两篇博客也是讲上传的,一篇是java web,一篇是django的 django的链接在这里 django下ckeditor上传图片的实现 j

ueditor 图片上传功能(.net)

假如下载的net文件 所在工程引用bin文件中的Newtonsoft.Json.dll 在浏览器中运行 `net/controller.ashx`,如果返回 "`{"state":"action 参数为空或者 action 不被支持."}`",则表示应用程序运行成功. 后端配置完成 UE.getEditor初始化时加入以下参数 imagePathFormat: "upload/image/{yyyy}{mm}{dd}/{time}{ra

百度编辑器ueditor给上传的图片添加水印

百度编辑器本身是没有为上传图片添加水印的功能,想要在上传的时候添加图片水印,也很简单.以 ueditor 1.2.6 为例,打开php目录下面的imageUp.php文件,查找"$info = $up->getFileInfo();",在这句代码的下面加入以下代码: /* 添加水印 start */ $water_img = "watermark.png"; //水印文件(替这里换成你要的水印) $img_min_w = 350; //添加水印需要图片最小达到

在SAE上使用Ueditor的图片上传功能

SAE上是没有目录读写权限的,所以要在SAE使用Ueditor的图片上传功能需要借助SAE的Storage服务. 一.开通Storage服务 在SAE控制台开通Storage服务,并新增一个domain. 二.修改Ueditor代码 Ueditor处理上传文件的方法在DjangoUeditor/jviews.py中,上传图片的请求是由下面函数处理的 #上传附件 @csrf_exempt def UploadFile(request,uploadtype,uploadpath):     '''

ASP.net core 使用UEditor.Core 实现 ueditor 上传功能

效果图: UEditor下载地址 https://ueditor.baidu.com/website/download.html ASP.net core 使用UEditor.Core 实现 ueditor 上传功能 https://www.cnblogs.com/WNpursue/archive/2019/02/20/ASPNetCore-use-UEditor-Core-share.html 原文地址:https://www.cnblogs.com/yechangzhong-82621779

Ueditor文件上传问题

我们在做一些网站是会遇到,要有上传文件一类的事情. 我发现百度的富文本编辑器带上传功能,但是没有办法给后台传递我们要的参数. 先在ueditor.all.js中找到, me.execCommand('insertHtml', html); 在它下面添加: me.fireEvent('afterUpfile',filelist); 此时,我们就可以在前台监听上传了. ps:filelist你联系上文,我们可以知道就是我们要的文件信息数组,有后台返回的. 在前台添加,uploadEditor为编辑器

CI框架整合微信公共平台接口

#CI框架控制器 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); /*** CI框架整合微信 2014.9.15 作者:黄国金 **/ define('TOKEN', 'hgj123'); class Weixin extends CI_Controller { #构造函数 function __construct() { #调用父类的构造函数 parent::__construct(); #以

nodejs 实现简单的文件上传功能

首先需要大家看一下目录结构,然后开始一点开始我们的小demo. 文件上传总计分为三种方式: 1.通过flash,activeX等第三方插件实现文件上传功能. 2.通过html的form标签实现文件上传功能,优点:浏览器兼容好. 3.通过xhr level2的异步请求,可以百度formData对象. 这里使用2做个练习. node插件请看下package.json文件 { "name": "upload", "version": "0.1