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

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

  1. VSCode无法写入用户设置 请打开用户设置并清除错误或警告, 然后重式

    VSCode无法写入用户设置 请打开用户设置并清除错误或警告, 然后重式 问题:晚上学弟问我他的VSCode安装插件时总是显示无法写入用户设置 请打开用户设置并清除错误或警告, 然后重式的警告的问题, ...

  2. Linux下如何设置权限让用户只删除自己的文件(粘滞位)

    之前我们知道如何针对用户和用户组来设置文件权限.通常是用三个八进制来设置权限的,这里我要说的是,其实是由四个八进制表示的.其中第一个八进制我们通常是忽略的.第二个到第四个是对应于SUID,SGID,s ...

  3. mysql没有创建数据库的权限设置_mysql 创建数据库,用户并给用户设置权限

    mysql创建数据 create database dataBaseName default charset utf8 collate utf8_general_ci; --创建数据库并设置字符集 创 ...

  4. Mysql添加用户设置权限

    1.使用MySQL root用户登录MySQL 2.使用命令创建一个用户 命令:CREATE USER 'username'@'localhost' IDENTIFIED BY 'password' ...

  5. Nginx应用(搭建网站、设置权限、用户认证)

    利用nginx服务搭建一个网站(www) 第一个历程:编写虚拟主机配置文件 cd /etc/nginx/conf.d/ #扩展名只能是.conf.因为主配置文件里加载的.conf #cat /etc/ ...

  6. Oracle创建用户设置权限

    create user TEST identified by "TEST"  --创建TEST用户 default tablespace USERS temporary table ...

  7. Mysql —— C语言链接mysql数据库,用户 角色 权限(用户根据角色的不同拥有增删改查的权限、用户有三种认证方式)

    db_修改过(用户 角色 权限): 1.新增用户时候id 改为最大id值加一,之前用的select查看出来的记录数加一,删除后再增加会出错: 2.删除用户时候,若该用户创建过其他用户(不能改此用户名. ...

  8. linux的用户及权限管理,用户及权限管理

    一.Linux用户.组的概念 1.用户 管理员:root,0 其他用户:1-65535 系统用户:1-499,守护进程获取资源进行权限分配 普通用户:500+,交互式登陆 2.组 管理员组:root, ...

  9. oracle中角色的用户和权限管理,用户角色与权限控制

    一.oracle中的用户 系统用户:sys.system(系统创建的用户) 登录命令:sqlplus sys/密码 as sysdba 备注:sys是oracle数据库中最高权限用户,角色为sysdb ...

最新文章

  1. 深度 | 解决真实世界问题:如何在不平衡类上使用机器学习?
  2. UOJ #310 黎明前的巧克力 (FWT)
  3. stm32F103的systick时间不准终于找到原因了
  4. linux 权限中加号,关于Linux中权限列中的加号及点的深度探索
  5. C/C++中的常量指针与指针常量
  6. 网赚新手必读:Google Adsense五条法则
  7. 记一次pthread_cancel_init段错误分析(bpftrace)
  8. 详解Python切片技术
  9. Arduino采集Microzone遥控器信号(ROSMicrozoneBridge)
  10. LaTeX语法环境配置:TeXLive + WinEdt
  11. linux设备/dev/dsp,/dev/mixer
  12. 技术经理成长复盘-激励
  13. 5分钟学会Python爬虫神器autoscraper——自动化爬虫必备
  14. HTML-----第二章表格及样式
  15. 纯CSS 毛玻璃效果
  16. Springboot(编程不良人)
  17. 以 “铝型材的特点” 为中心,写一段话
  18. STM32串口IDLE中断
  19. C#做外挂的常用API,本人用了很久,基本没发现问题
  20. 想用ChatGPT写作?或许没你想的那么神奇...

热门文章

  1. Linux 下shell中exec解析
  2. 洛谷P3245 [HNOI2016]大数 【莫队】
  3. HDU4417 Super Mario 主席树
  4. SQL联合查询:子表任一记录与主表联合查询
  5. hashicorp/consul
  6. Qt-qwidget项目入门实例
  7. Server.Transfer 和 Response.Redirect 的用法
  8. MFC C++ Cstring与string互转
  9. 使用C++访问OPC Server的简单方法
  10. 切换用户_Mac如何在多个用户间快速切换?