ueditor是一款很不错的编辑器,xss等过滤的也很OK,但可惜是单用户,在多图上传的功能中,不同用户上传的图片都会被罗列出来,但很多用户的素材图片是私有的,不想被别的用户使用或者浏览,这里简单的改写一源码,实现多用户功能(php版):
上传类
php/action_upload.php
session_start();include "Uploader.class.php";//用户id$uid = $_SESSION['user']['id] ? $_SESSION['user']['id] : 0;/* 上传配置 */$base64 = "upload";switch (htmlspecialchars($_GET['action'])) { case 'uploadimage': //用户为会员时则将$CONFIG['imagePathFormat']中的某一级路径插入uid作为分隔路径 if (!empty($uid)) { $config = array( "pathFormat" => str_replace("uploads", "uploads/$uid", $CONFIG['imagePathFormat']), "maxSize" => $CONFIG['imageMaxSize'], "allowFiles" => $CONFIG['imageAllowFiles'] ); } else { $config = array( "pathFormat" => $CONFIG['imagePathFormat'], "maxSize" => $CONFIG['imageMaxSize'], "allowFiles" => $CONFIG['imageAllowFiles'] ); } $fieldName = $CONFIG['imageFieldName']; break; ... ... ...
根据 uid 限制上传路径到个人目录
列表类
php/action_list.php
session_start();include "Uploader.class.php";//用户id$uid = $_SESSION['user']['id] ? $_SESSION['user']['id] : 0;/* 判断类型 */switch ($_GET['action']) { /* 列出文件 */ case 'listfile': $allowFiles = $CONFIG['fileManagerAllowFiles']; $listSize = $CONFIG['fileManagerListSize']; $path = $CONFIG['fileManagerListPath']; break; /* 列出图片 */ case 'listimage': default: $user_info = $_SESSION['user_info']; $allowFiles = $CONFIG['imageManagerAllowFiles']; $listSize = $CONFIG['imageManagerListSize']; if (!empty($uid)) { $path = str_replace("uploads", "uploads/$uid", $CONFIG['imageManagerListPath']); } else { $path = $CONFIG['imageManagerListPath']; }}
根据 uid 限制罗列出个人目录下的图片
概括:
当然,这只是举例,你可以根据自己的项目需求设计个人目录的格式串,只要保证和当前用户能相关联起来即可,同时将此格式串穿插到配置文件中的 “imageManagerListPath”路径里即可,这里我简单的使用字符串替换 。
$CONFIG['imagePathFormat'] 和 $CONFIG['imageManagerListPath'] 的配置在同级目录下的 config.json 文件中。
这里我上传的路径为 public/uploads/yyyymmdd 格式,所以我选择了 uploads 将其替换为 uploads/uid 的格式,在列举图片时也动态修改路径为 uploads/uid 下的,这样就可以将活动路径限制在每个用户自己的名下。