elfinder文件管理器整合到TP中使用

浏览:9976 发布日期:2013/09/11 分类:技术分享
今天在找一款有丰富UI的文件管理器,找来找去,要么太臃肿,要么就难以使用。还好最后发现一款叫做elfinder的基于jquery+jquery ui的文件管理器,原生支持zh_CN,默认提供php接口。
简单先预览一下界面吧:



好了,由于默认提供的php接口是原生php的,如果想整合进后台并能够受到权限控制系统的管理,那是最好不过了。看了一下,发现这个插件结构还挺清晰的,于是稍微弄了一下就支持了。
elfinder官网:http://elfinder.org/
elfinder手册:https://github.com/Studio-42/elFinder/wiki
elfinder下载:https://github.com/downloads/Studio-42/elFinder/elfinder-2.0-rc1.tar.gz

先下载下来,解压,将文件夹名字改为elfinder,然后将其复制到项目Public目录中。目录结构如下:/
index.php 入口文件
uploads  上传文件保存目录
Public    公共目录
    -elfinder   elfinder文件管理器
         -css
         -img
         -js
         -php
Home    项目目录
    -Lib
       -Action   控制器目录
           -FileAction.class.php   文件管理器模块
    -Tpl   模板目录
       -File
         -index.html  文件管理器模板
……其他目录省略
一、前端部署
首先将elfinder/js/i18n/下的zh_CN.js之外的文件都删掉,我们只需要中文语言包。

创建FileAction模块,我们就以它默认首页作为文件管理器访问入口,所以对应模板也就是 Tpl/File/index.html,这个模板文件我们需要从elfinder/下将elfinder.html这个文件复制过来并改名为index.html.

我们先修改模板index.html:
1.里面的jquery和jquery.ui库是直接从谷歌加载的,如有需要请换成你自己本地的
2.两个css,两个elfinder的js文件,将路径前面分别加上__PUBLIC__/elfinder/,形如:<script type="text/javascript" src="__PUBLIC__/elfinder/js/elfinder.min.js"></script>
3.初始化elfinder插件根据elfinder手册自己看着办,这里我们需要指定一下语言和php入口,如下仅供参考:        <script type="text/javascript" charset="utf-8">
            $().ready(function() {
                var elf = $('#elfinder').elfinder({
                    url : "{:U('File/connect')}"  // 这里设置为File模块的index方法,用U方法构建
                    lang: 'zh_CN',             // language (OPTIONAL)
                }).elfinder('instance');
            });
        </script>
到这里前端配置完毕,最后记得将elfinder/elfinder.html删掉,防止别人从外部非法访问。

二、模块配置
我们打开FileAction.class.php,创建index方法和connect方法:class FileAction extends Action{
    function index(){
         $this->display();
    }

   function connect(){
         define("IN_ADMIN",1);//重要,定义一个常量,在插件的PHP入口文件中验证,防止非法访问。
         include './Public/elfinder/php/connector.php';//包含elfinder自带php接口的入口文件
   }

}
保存。
打开并修改Public/elfinder/php/connector.php
在开头添加一行if(!defined('IN_ADMIN')) exit;//验证是否有定义IN_ADMIN常量,没有直接退出,防止非法访问接着往下,修改上传路径相关的一些参数,仅列出我的以供参考:$opts = array(
    // 'debug' => true,
    'roots' => array(
        array(
            'driver'        => 'LocalFileSystem',   // driver for accessing file system (REQUIRED)
            'path'          => './uploads/',         // 上传文件目录的物理路径(必须)
            'URL'           => __ROOT__.'/uploads/', // 上传文件目录的URL
            'accessControl' => 'access'             // disable and hide dot starting files (OPTIONAL)
        )
    )
);
请各位根据需求自己修改,driver可以是MySql,支持数据库保存文件信息。这里有一篇博文介绍这个配置的
http://my.oschina.net/sherry1026/blog/132890

最后有兴趣的同学亲自试试看吧!
最佳答案
评论( 相关
后面还有条评论,点击查看>>