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
CKFinder根据用户设置权限,不同用户有自己的私有的、独立的文件夹的更多相关文章
- OA之为用户设置角色和为用户设置权限
1.为用户设置角色 { Layout = null; } @using OA.Model <!DOCTYPE html> <html> <head> <met ...
- Linux用户和权限——管理用户和用户组的命令
Linux用户和权限——管理用户和用户组的命令 摘要:本文主要学习了在Linux系统中管理用户和用户组的命令. useradd命令 useradd命令可以用来创建新用户. 基本语法 useradd [ ...
- Oracle创建用户设置权限
(转:http://www.cnblogs.com/yangy608/archive/2011/08/22/2148893.html) create user TEST identified by & ...
- mysql 给用户设置权限
grant all on wordpress.* to wordpress@'10.0.0.%' identified by 'wordpress'; all 全部权限 ...
- mysql 创建用户, 分配权限, 删除用户
通过create user 命令来创建用户, 有两种方式:(只介绍通过 create user 命令, 直接往user表中插入数据的方式,这里就不说了) 创建用户的同时, 指定用户可登录的主机和密码 ...
- mysql新加用户设置权限
1.开通操作权限和表权限 GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON interface.* TO test1@'%' identif ...
- FTP配置和用户设置权限
http://www.cnblogs.com/xcxc/archive/2013/01/25/2876749.html ---------------------------------------- ...
- vim没有权限却可以强制保存时所引起的思考 ------ 文件夹权限对所属文件的权限影响
最近在拿着Linux 鸟叔私房菜对着Linux 系统学习一下基本操作,虽然已经使用Linux系统已经好多年不过却一直没有系统的学习一下.在用vim 编辑一个文件的时候出现了一个很神奇的事情,明明该文件 ...
- Oracle用户、权限、角色管理(转)
http://blog.csdn.net/junmail/article/details/4381287 Oracle 权限设置一.权限分类:系统权限:系统规定用户使用数据库的权限.(系统权限是对用户 ...
随机推荐
- ie6、ie7下overflow失效
如果父对象有overflow:hidden属性,子对象中的position属性是relative或者absolute, 那么在ie6和ie7下父对象的overflow会失效,解决办法是给父对象加rel ...
- 深度学习方法:受限玻尔兹曼机RBM(一)基本概念
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术.应用感兴趣的同学加入. 最近在复习经典机器学习算法的同 ...
- QT中ui更改后不能更新的解决方法
ui源文件到界面显示的原理可以网上搜索,这里不再描述.简单讲就是先要从*.ui生成ui_*.h然后再编译,所以界面未更新实际上是因为ui_*.h这个文件没有更新导致的. 出现此问题后我尝试了以下几个方 ...
- 【JBPM4】任务form表单
主要是在任务节点处保存一个链接地址(表单),方便在执行到此时取值,访问. 好处是XML可随时修改,部署. JPDL <?xml version="1.0" encoding= ...
- centos7.5英文环境切换到中文环境,再切回中文环境后 ,terminal不能用
1.查看系统日志 less /var/logs/message May 12 21:54:41 localhost python: SELinux is preventing /usr/libexec ...
- [putty] ubuntu 通过配置文件设置字体
创建了一个session之后,就能在 ~/.putty/sessions/ 文件夹下看到session的配置文件了 $ vim ~/.putty/sessions/session-name 搜索Fon ...
- 《深入理解Android2》读书笔记(一)
2017-5-12 从今天开始估计有一段空闲时间,开始阅读<深入理解Android2>,并写读书笔记. 第一章搭建环境直接略过. 第二章是Binder,暂时略过 7大类服务包括:1.And ...
- 如何直接运行python文件
1. 在Windows上是不能直接运行python文件的,但是,在Mac和Linux上是可以的,方法是在.py文件的第一行加上一个特殊的注释: #!/usr/bin/env python3 print ...
- 并发系列1----大白话聊聊Java并发面试问题之volatile到底是什么?【石杉的架构笔记】
- SCU 4444 Travel (补图最短路)
Travel The country frog lives in has \(n\) towns which are conveniently numbered by \(1, 2, \dots, n ...