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根据用户设置权限,不同用户有自己的私有的、独立的文件夹相关推荐
- VSCode无法写入用户设置 请打开用户设置并清除错误或警告, 然后重式
VSCode无法写入用户设置 请打开用户设置并清除错误或警告, 然后重式 问题:晚上学弟问我他的VSCode安装插件时总是显示无法写入用户设置 请打开用户设置并清除错误或警告, 然后重式的警告的问题, ...
- Linux下如何设置权限让用户只删除自己的文件(粘滞位)
之前我们知道如何针对用户和用户组来设置文件权限.通常是用三个八进制来设置权限的,这里我要说的是,其实是由四个八进制表示的.其中第一个八进制我们通常是忽略的.第二个到第四个是对应于SUID,SGID,s ...
- mysql没有创建数据库的权限设置_mysql 创建数据库,用户并给用户设置权限
mysql创建数据 create database dataBaseName default charset utf8 collate utf8_general_ci; --创建数据库并设置字符集 创 ...
- Mysql添加用户设置权限
1.使用MySQL root用户登录MySQL 2.使用命令创建一个用户 命令:CREATE USER 'username'@'localhost' IDENTIFIED BY 'password' ...
- Nginx应用(搭建网站、设置权限、用户认证)
利用nginx服务搭建一个网站(www) 第一个历程:编写虚拟主机配置文件 cd /etc/nginx/conf.d/ #扩展名只能是.conf.因为主配置文件里加载的.conf #cat /etc/ ...
- Oracle创建用户设置权限
create user TEST identified by "TEST" --创建TEST用户 default tablespace USERS temporary table ...
- Mysql —— C语言链接mysql数据库,用户 角色 权限(用户根据角色的不同拥有增删改查的权限、用户有三种认证方式)
db_修改过(用户 角色 权限): 1.新增用户时候id 改为最大id值加一,之前用的select查看出来的记录数加一,删除后再增加会出错: 2.删除用户时候,若该用户创建过其他用户(不能改此用户名. ...
- linux的用户及权限管理,用户及权限管理
一.Linux用户.组的概念 1.用户 管理员:root,0 其他用户:1-65535 系统用户:1-499,守护进程获取资源进行权限分配 普通用户:500+,交互式登陆 2.组 管理员组:root, ...
- oracle中角色的用户和权限管理,用户角色与权限控制
一.oracle中的用户 系统用户:sys.system(系统创建的用户) 登录命令:sqlplus sys/密码 as sysdba 备注:sys是oracle数据库中最高权限用户,角色为sysdb ...
最新文章
- 深度 | 解决真实世界问题:如何在不平衡类上使用机器学习?
- UOJ #310 黎明前的巧克力 (FWT)
- stm32F103的systick时间不准终于找到原因了
- linux 权限中加号,关于Linux中权限列中的加号及点的深度探索
- C/C++中的常量指针与指针常量
- 网赚新手必读:Google Adsense五条法则
- 记一次pthread_cancel_init段错误分析(bpftrace)
- 详解Python切片技术
- Arduino采集Microzone遥控器信号(ROSMicrozoneBridge)
- LaTeX语法环境配置:TeXLive + WinEdt
- linux设备/dev/dsp,/dev/mixer
- 技术经理成长复盘-激励
- 5分钟学会Python爬虫神器autoscraper——自动化爬虫必备
- HTML-----第二章表格及样式
- 纯CSS 毛玻璃效果
- Springboot(编程不良人)
- 以 “铝型材的特点” 为中心,写一段话
- STM32串口IDLE中断
- C#做外挂的常用API,本人用了很久,基本没发现问题
- 想用ChatGPT写作?或许没你想的那么神奇...