• CKFinder根据用户设置权限,不同用户有自己的私有的、独立的文件夹


    CKFinder 默认情况下多个用户共用同一个图片目录。所有上传的图片和Flash全部保存在同一个文件夹(默认为 userfiles)内。

        现在想实现:

        第1个需求:不同用户有自己的私有的、独立的文件夹;
        第2个需求:同一个用户的文件能根据上传时间自动归类;

        在 CKEditor 的以前版本 FCKEditor 中,其实也可以实现这些功能,只是修改原代码比较繁琐,需要修改的地方也很多(参见:http://blog.why100000.com/?p=513)。而新版本的 CKEditor 提供的 config.php 文件,为我们编程提供了一定的方便,我们现在主要是“编程”,而不是“修改”了。

        找到 /ckfinder/config.php 中的 $baseUrl。这个变量是 CKFinder 管理的顶级目录。假设 $baseUrl='/userfiles/',那么默认的目录结构是:

        /userfiles/
        flashes/
        images/

        如果想改成这个结构:

        /userfiles/
        user1
        flashes/
        images/
        user2
        flashes/
        images/

        只要为每个用户设定好各自的顶级目录就可以了: $baseUrl = '/userfiles/' . $user;

        注意,如果 $user 的值是从 $_SESSION 变量中取得,需要在 /ckfinder/config.php 中加上 session_start() 语句。

         好了,第一个需求实现了。

        第二个需求:同一个用户的文件能根据上传时间自动归类

        这需要两个步骤:

        第一、找到 /ckfinder/core/connector/php/php5/CommandHandler/FileUpload.php 文件(for PHP5),文件上传的主要逻辑就在这里了。

        在这个文件里找到 $sServerDir = $this->_currentFolder->getServerPath();

        将其改成:

        $sServerDir = $this->_currentFolder->getServerPath();
        if ($_GET['command'] == 'QuickUpload')
        { //加上以年和月两层目录
        $sServerDir .= '/'. date('Y/m');
        }
        if (!file_exists($sServerDir))
        { //目录若未出现则创建它
        CKFinder_Connector_Utils_FileSystem::createDirectoryRecursively($sServerDir);
        }

        第二、找到 /ckfinder/core/connector/php/php5/CommandHandler/QuickUpload.php

        找到其中的 $oRegistry->set("FileUpload_url", $this->_currentFolder->getUrl());

        将其改为:

        $oRegistry->set("FileUpload_url", $this->_currentFolder->getUrl() . date('Y/m/'));

        好了,大功告成。

        总结:

        无论怎样的文件命名规则,都是 $baseUrl、$sServerDir 和 $sFileName 这三个变量的组合。

        如果是 QuickUpload,就是从 ckeditor 的控件去上传文件,还需留意两个要注册的变量:

        $oRegistry->set("FileUpload_url", $value); 和
        $oRegistry->set("FileUpload_fileName", $value);

        FileUpload_url,FileUpload_fileName 这两个变量是将刚上传的文件的 URL 返回到前端的 ckeditor。

        作者:张庆(网眼) 西安 PHP 教育培训中心 2010-8-25
        来自“网眼视界”:http://blog.why100000.com
        作者微博:http://t.qq.com/zhangking
        “十万个为什么”电脑学习网:http://www.why100000.com

  • 相关阅读:
    vscode前端必备插件-提高开发效率-起飞-图文-简介
    Python使用yagmail超简单发送邮件、keyring读取密钥、schedule定时任务、imbox操作
    Django中自定义管理类
    Diango中的模型成员
    Django中的Q查询
    【Windows】垃圾清理
    【RabbitMQ】三、交换器和队列
    对酒店房间自助售货机的支付漏洞挖掘
    记录第二次“梅花三弄”的渗透之旅
    Web渗透测试:信息收集篇
  • 原文地址:https://www.cnblogs.com/suizhikuo/p/3180926.html
Copyright © 2020-2023  润新知