文档章节

thinkphp使用 kindEditor 附加图片上传

 自信的水草
发布于 2016/09/23 10:24
字数 689
阅读 153
收藏 0

使用的kindEditor 版本为 KindEditor 4.1.10

thinkphp版本 3.2

js脚本

<script>
    var editor;
    var editor_upload = "<?=U('Home/Upload/image');?>";
    var editor_manager = "<?=U('Home/Upload/getManager');?>";
    //正文编辑器
    KindEditor.ready(function(K) {
        editor = K.create('#editor',{
            pasteType: 2,//0:禁止粘贴, 1:纯文本粘贴, 2:HTML粘贴
            resizeType : 1,
            allowPreviewEmoticons : false,
            uploadJson: editor_upload,
            fileManagerJson: editor_manager,
            allowFileManager: true,
            filePostName: 'upfile',
            extraFileUploadParams: {
                _token: ""
            },
            afterBlur: function () {
                this.sync();
            }
        });
        //image upload input
        (function () {
            //上传按钮
            var currentInput;//当前接收url的
            var currentPreviewImg;//预览img
            var editor = K.editor({
                uploadJson: editor_upload,
                fileManagerJson: editor_manager,
                allowFileManager: true,
                filePostName: 'upfile',
                extraFileUploadParams: {
                    _token: ""
                }
            });
            K('.uppic button').click(function () {
                var top = $('.uppic');
                var currentInput = top.find('input');
                var currentPreviewImg = top.find('img');
                editor.loadPlugin('image', function () {
                    editor.plugin.imageDialog({
                        imageUrl: currentInput.val(),
                        clickFn: function (url, title, width, height, border, align) {
                            currentInput.val(url);
                            currentPreviewImg.attr('src', url);
                            editor.hideDialog();
                        }
                    });
                });
            });
        })();
    });
</script>

 

php控制器内的代码

public function image()
    {
        if (!IS_POST) die();
        $upload = new \Think\Upload();// 实例化上传类
        $upload->maxSize = 3145728;// 设置附件上传大小
        $upload->exts = array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
        $upload->rootPath = './uploads/image/'; // 设置附件上传根目录
        // 上传单个文件
        $info = $upload->uploadOne($_FILES['upfile']);
        if (!$info) {// 上传错误提示错误信息
            $this->ajaxReturn(array('error' => 1, 'message' => $upload->getError()));
        } else {// 上传成功
            $this->ajaxReturn(array('error' => 0, 'url' => __ROOT__.'/uploads/image/'.$info['savepath'] . $info['savename']));
        }
    }
    //图片空间
    public function getManager()
    {
        //根目录路径,可以指定绝对路径,比如 /var/www/attached/
        $root_path = './uploads/';
        //根目录URL,可以指定绝对路径,比如 http://www.yoursite.com/attached/
        $root_url = __ROOT__.'/uploads/';
        //图片扩展名
        $ext_arr = array('gif', 'jpg', 'jpeg', 'png');
        //目录名
        $dir_name = empty($_GET['dir']) ? '' : trim($_GET['dir']);
        if (!in_array($dir_name, array('', 'image', 'flash', 'media', 'file'))) {
            echo "Invalid Directory name.";
            exit;
        }
        if ($dir_name !== '') {
            $root_path .= $dir_name . "/";
            $root_url .= $dir_name . "/";
            if (!file_exists($root_path)) {
                mkdir($root_path);
            }
        }
        //根据path参数,设置各路径和URL
        if (empty($_GET['path'])) {
            $current_path = realpath($root_path) . '/';
            $current_url = $root_url;
            $current_dir_path = '';
            $moveup_dir_path = '';
        } else {
            $current_path = realpath($root_path) . '/' . $_GET['path'];
            $current_url = $root_url . $_GET['path'];
            $current_dir_path = $_GET['path'];
            $moveup_dir_path = preg_replace('/(.*?)[^\/]+\/$/', '$1', $current_dir_path);
        }
        //echo realpath($root_path);
        //不允许使用..移动到上一级目录
        if (preg_match('/\.\./', $current_path)) {
            echo 'Access is not allowed.';
            exit;
        }
        //最后一个字符不是/
        if (!preg_match('/\/$/', $current_path)) {
            echo 'Parameter is not valid.';
            exit;
        }
        //目录不存在或不是目录
        if (!file_exists($current_path) || !is_dir($current_path)) {
            echo 'Directory does not exist.';
            exit;
        }
        //遍历目录取得文件信息
        $file_list = array();
        if ($handle = opendir($current_path)) {
            $i = 0;
            while (false !== ($filename = readdir($handle))) {
                if ($filename{0} == '.') continue;
                $file = $current_path . $filename;
                if (is_dir($file)) {
                    $file_list[$i]['is_dir'] = true; //是否文件夹
                    $file_list[$i]['has_file'] = (count(scandir($file)) > 2); //文件夹是否包含文件
                    $file_list[$i]['filesize'] = 0; //文件大小
                    $file_list[$i]['is_photo'] = false; //是否图片
                    $file_list[$i]['filetype'] = ''; //文件类别,用扩展名判断
                } else {
                    $file_list[$i]['is_dir'] = false;
                    $file_list[$i]['has_file'] = false;
                    $file_list[$i]['filesize'] = filesize($file);
                    $file_list[$i]['dir_path'] = '';
                    $file_ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
                    $file_list[$i]['is_photo'] = in_array($file_ext, $ext_arr);
                    $file_list[$i]['filetype'] = $file_ext;
                }
                $file_list[$i]['filename'] = $filename; //文件名,包含扩展名
                $file_list[$i]['datetime'] = date('Y-m-d H:i:s', filemtime($file)); //文件最后修改时间
                $i++;
            }
            closedir($handle);
        }
        usort($file_list, array($this, 'cmp'));
        $result = array();
        //相对于根目录的上一级目录
        $result['moveup_dir_path'] = $moveup_dir_path;
        //相对于根目录的当前目录
        $result['current_dir_path'] = $current_dir_path;
        //当前目录的URL
        $result['current_url'] = $current_url;
        //文件数
        $result['total_count'] = count($file_list);
        //文件列表数组
        $result['file_list'] = $file_list;
        //输出JSON字符串
        return $this->ajaxReturn($result);
    }

© 著作权归作者所有

粉丝 0
博文 71
码字总数 11104
作品 0
南京
私信 提问
KindEditor在thinkphp上的使用方法

KindEditor是一套开源的HTML可视化编辑器,主要用于让用户在网站上获得所见即所得编辑效果,且兼容主流浏览器。与ueditor这样的大块头相比,KindEditor的优点是不言而喻的--它体积小,加载速...

网菠萝果
2012/11/20
2.5K
0
php开源论坛程序--youyax,集三年之所学所思。

“是的,漫长的等待终于结束了” 这是一款真正意义上的开源软件,你可以随意的使用它, 是2010年10月学校刚毕业从0开始一直在构思开发的(Ps:在学校里怎么就没早早用功), 期间也受到很多x...

大前端工程师
2013/08/07
1K
20
[上海]寻找一份PHP开发的工作

求职意向 和PHP开发相关的工作岗位; 工作地点 上海 专业学历 2007年-2010年_计算机科学与应用技术专业_专科; 相关技能 基于PHP+Mysql的Web应用程序开发; 使用ThinkPHP框架; 使用Jquery完成a...

此人已死,有事烧纸
2012/10/21
791
7
ThinkPHP第二十九天(Kindeditor编辑器使用)

1、Kindeditor编辑器使用方法 第一步:引入文件 <js file="PUBLIC/Js/kind/kindeditor-all-min.js" /> <js file="PUBLIC/Js/kind/lang/zh_CN.js" /> <cs file="PUBLIC/Js/kind/themes/defaul......

huilange126
2014/02/27
1K
0
2013 年国产开源软件 10 大年度热门项目

2013 年结束了,我们根据过去一年的用户访问、交流分享和项目本身的更新频度等诸多角度对收录于开源中国的近三万款开源软件进行统计,从而得出前 10 名最受欢迎的开源软件,仅供参考。 本排行...

oschina
2014/01/02
26.7K
82

没有更多内容

加载失败,请刷新页面

加载更多

64.监控平台介绍 安装zabbix 忘记admin密码

19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabbix 19.5 忘记Admin密码如何做 19.1 Linux监控平台介绍: 常见开源监控软件 ~1.cacti、nagios、zabbix、smokeping、ope...

oschina130111
今天
10
0
当餐饮遇上大数据,嗯真香!

之前去开了一场会,主题是「餐饮领袖新零售峰会」。认真听完了餐饮前辈和新秀们的分享,觉得获益匪浅,把脑子里的核心纪要整理了一下,今天和大家做一个简单的分享,欢迎感兴趣的小伙伴一起交...

数澜科技
今天
7
0
DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
今天
6
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
今天
11
0
实验分析性专业硕士提纲撰写要点

为什么您需要研究论文的提纲? 首先当您进行研究时,您需要聚集许多信息和想法,研究论文提纲可以较好地组织你的想法, 了解您研究资料的流畅度和程度。确保你写作时不会错过任何重要资料以此...

论文辅导员
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部