diff --git a/app/ueditor.json b/app/ueditor.json deleted file mode 100644 index 45488a31..00000000 --- a/app/ueditor.json +++ /dev/null @@ -1,94 +0,0 @@ -/* 前后端通信相关的配置,注释只允许使用多行方式 */ -{ - /* 上传图片配置项 */ - "imageActionName": "uploadimage", /* 执行上传图片的action名称 */ - "imageFieldName": "upfile", /* 提交的图片表单名称 */ - "imageMaxSize": 2048000, /* 上传大小限制,单位B */ - "imageAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 上传图片格式显示 */ - "imageCompressEnable": true, /* 是否压缩图片,默认是true */ - "imageCompressBorder": 1600, /* 图片压缩最长边限制 */ - "imageInsertAlign": "none", /* 插入的图片浮动方式 */ - "imageUrlPrefix": "", /* 图片访问路径前缀 */ - "imagePathFormat": "./uploads/editor/image", /* 上传保存路径,可以自定义保存路径和文件名格式 */ - /* {filename} 会替换成原文件名,配置这项需要注意中文乱码问题 */ - /* {rand:6} 会替换成随机数,后面的数字是随机数的位数 */ - /* {time} 会替换成时间戳 */ - /* {yyyy} 会替换成四位年份 */ - /* {yy} 会替换成两位年份 */ - /* {mm} 会替换成两位月份 */ - /* {dd} 会替换成两位日期 */ - /* {hh} 会替换成两位小时 */ - /* {ii} 会替换成两位分钟 */ - /* {ss} 会替换成两位秒 */ - /* 非法字符 \ : * ? " < > | */ - /* 具请体看线上文档: fex.baidu.com/ueditor/#use-format_upload_filename */ - - /* 涂鸦图片上传配置项 */ - "scrawlActionName": "uploadscrawl", /* 执行上传涂鸦的action名称 */ - "scrawlFieldName": "upfile", /* 提交的图片表单名称 */ - "scrawlPathFormat": "./uploads/editor/image", /* 上传保存路径,可以自定义保存路径和文件名格式 */ - "scrawlMaxSize": 2048000, /* 上传大小限制,单位B */ - "scrawlUrlPrefix": "", /* 图片访问路径前缀 */ - "scrawlInsertAlign": "none", - - /* 截图工具上传 */ - "snapscreenActionName": "uploadimage", /* 执行上传截图的action名称 */ - "snapscreenPathFormat": "./uploads/editor/image", /* 上传保存路径,可以自定义保存路径和文件名格式 */ - "snapscreenUrlPrefix": "", /* 图片访问路径前缀 */ - "snapscreenInsertAlign": "none", /* 插入的图片浮动方式 */ - - /* 抓取远程图片配置 */ - "catcherLocalDomain": ["127.0.0.1", "localhost", "img.baidu.com"], - "catcherActionName": "catchimage", /* 执行抓取远程图片的action名称 */ - "catcherFieldName": "source", /* 提交的图片列表表单名称 */ - "catcherPathFormat": "./uploads/editor/image", /* 上传保存路径,可以自定义保存路径和文件名格式 */ - "catcherUrlPrefix": "", /* 图片访问路径前缀 */ - "catcherMaxSize": 2048000, /* 上传大小限制,单位B */ - "catcherAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 抓取图片格式显示 */ - - /* 上传视频配置 */ - "videoActionName": "uploadvideo", /* 执行上传视频的action名称 */ - "videoFieldName": "upfile", /* 提交的视频表单名称 */ - "videoPathFormat": "./uploads/editor/video", /* 上传保存路径,可以自定义保存路径和文件名格式 */ - "videoUrlPrefix": "", /* 视频访问路径前缀 */ - "videoMaxSize": 102400000, /* 上传大小限制,单位B,默认100MB */ - "videoAllowFiles": [ - ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", - ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid"], /* 上传视频格式显示 */ - - /* 上传文件配置 */ - "fileActionName": "uploadfile", /* controller里,执行上传视频的action名称 */ - "fileFieldName": "upfile", /* 提交的文件表单名称 */ - "filePathFormat": "./uploads/editor/file", /* 上传保存路径,可以自定义保存路径和文件名格式 */ - "fileUrlPrefix": "", /* 文件访问路径前缀 */ - "fileMaxSize": 51200000, /* 上传大小限制,单位B,默认50MB */ - "fileAllowFiles": [ - ".png", ".jpg", ".jpeg", ".gif", ".bmp", - ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", - ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid", - ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso", - ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml" - ], /* 上传文件格式显示 */ - - /* 列出指定目录下的图片 */ - "imageManagerActionName": "listimage", /* 执行图片管理的action名称 */ - "imageManagerListPath": "./uploads/editor/image/", /* 指定要列出图片的目录 */ - "imageManagerListSize": 20, /* 每次列出文件数量 */ - "imageManagerUrlPrefix": "", /* 图片访问路径前缀 */ - "imageManagerInsertAlign": "none", /* 插入的图片浮动方式 */ - "imageManagerAllowFiles": [".png", ".jpg", ".jpeg", ".gif", ".bmp"], /* 列出的文件类型 */ - - /* 列出指定目录下的文件 */ - "fileManagerActionName": "listfile", /* 执行文件管理的action名称 */ - "fileManagerListPath": "./uploads/editor/file/", /* 指定要列出文件的目录 */ - "fileManagerUrlPrefix": "", /* 文件访问路径前缀 */ - "fileManagerListSize": 20, /* 每次列出文件数量 */ - "fileManagerAllowFiles": [ - ".png", ".jpg", ".jpeg", ".gif", ".bmp", - ".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", - ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid", - ".rar", ".zip", ".tar", ".gz", ".7z", ".bz2", ".cab", ".iso", - ".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx", ".pdf", ".txt", ".md", ".xml" - ] /* 列出的文件类型 */ - -} \ No newline at end of file diff --git a/extend/com/Ueditor.php b/extend/com/Ueditor.php deleted file mode 100644 index 2ada55eb..00000000 --- a/extend/com/Ueditor.php +++ /dev/null @@ -1,354 +0,0 @@ -uid = session('user_auth.uid'); - } - - //导入设置 - $this->config = json_decode(preg_replace("/\/\*[\s\S]+?\*\//", "", file_get_contents(app()->getAppPath() . "ueditor.json")), true); - - $action = htmlspecialchars($_GET['action']); - - switch ($action) { - case 'config': - $result = json_encode($this->config); - break; - - case 'uploadimage': - $config = array( - "pathFormat" => $this->config['imagePathFormat'], - "maxSize" => $this->config['imageMaxSize'], - "allowFiles" => $this->config['imageAllowFiles'], - ); - $fieldName = $this->config['imageFieldName']; - $result = $this->uploadFile($config, $fieldName); - break; - - case 'uploadscrawl': - $config = array( - "pathFormat" => $this->config['scrawlPathFormat'], - "maxSize" => $this->config['scrawlMaxSize'], - "allowFiles" => $this->config['scrawlAllowFiles'], - "oriName" => "scrawl.png", - ); - $fieldName = $this->config['scrawlFieldName']; - $result = $this->uploadBase64($config, $fieldName); - break; - - case 'uploadvideo': - $config = array( - "pathFormat" => $this->config['videoPathFormat'], - "maxSize" => $this->config['videoMaxSize'], - "allowFiles" => $this->config['videoAllowFiles'], - ); - $fieldName = $this->config['videoFieldName']; - $result = $this->uploadFile($config, $fieldName); - break; - - case 'uploadfile': - // default: - $config = array( - "pathFormat" => $this->config['filePathFormat'], - "maxSize" => $this->config['fileMaxSize'], - "allowFiles" => $this->config['fileAllowFiles'], - ); - $fieldName = $this->config['fileFieldName']; - $result = $this->uploadFile($config, $fieldName); - break; - - case 'listfile': - $config = array( - 'allowFiles' => $this->config['fileManagerAllowFiles'], - 'listSize' => $this->config['fileManagerListSize'], - 'path' => $this->config['fileManagerListPath'], - ); - $result = $this->listFile($config); - break; - - case 'listimage': - $config = array( - 'allowFiles' => $this->config['imageManagerAllowFiles'], - 'listSize' => $this->config['imageManagerListSize'], - 'path' => $this->config['imageManagerListPath'], - ); - $result = $this->listFile($config); - break; - - case 'catchimage': - $config = array( - "pathFormat" => $this->config['catcherPathFormat'], - "maxSize" => $this->config['catcherMaxSize'], - "allowFiles" => $this->config['catcherAllowFiles'], - "oriName" => "remote.png", - ); - $fieldName = $this->config['catcherFieldName']; - $result = $this->saveRemote($config, $fieldName); - break; - - default: - $result = json_encode(array( - 'state' => 'wrong require', - )); - break; - - } - - if (isset($_GET["callback"])) { - if (preg_match("/^[\w_]+$/", $_GET["callback"])) { - $this->output = htmlspecialchars($_GET["callback"]) . '(' . $result . ')'; - } else { - $this->output = json_encode(array( - 'state' => 'callback参数不合法', - )); - } - } else { - $this->output = $result; - } - } - - /** - * - * 输出结果 - * @param data 数组数据 - * @return 组合后json格式的结果 - */ - public function output() { - return $this->output; - } - - /** - * 上传文件方法 - * - */ - private function uploadFile($config, $fieldName) { - $file = request()->file('upfile'); - if (is_array($config['allowFiles'])) { - $config['allowFiles'] = str_replace('.', '', implode(',', $config['allowFiles'])); - }else{ - $config['allowFiles'] = ''; - } - $info = $file->validate(array('size'=>$config['maxSize'], 'ext'=>$config['allowFiles']))->move($config['pathFormat'], true, false); - - if ($info) { - $data = array( - 'state' => "SUCCESS", - 'url' => str_replace("\\", '/', substr($info->getPathname(), 1)), - 'title' => $info->getSaveName(), - 'original' => $info->getFilename(), - 'type' => '.' . $info->getExtension(), - 'size' => $info->getSize(), - ); - } else { - $data = array( - "state" => $file->getError(), - ); - } - return json_encode($data); - } - - /** - * - * Enter description here ... - */ - private function uploadBase64($config, $fieldName) { - $data = array(); - - $base64Data = $_POST[$fieldName]; - $img = base64_decode($base64Data); - $path = $this->getFullPath($config['pathFormat']); - - if (strlen($img) > $config['maxSize']) { - $data['states'] = 'too large'; - return json_encode($data); - } - - $rootpath = $this->rootpath; - - //替换随机字符串 - $imgname = uniqid() . '.png'; - $filename = $path . $imgname; - - if (\Think\Storage::put($rootpath, $filename, $img)) { - $data = array( - 'state' => 'SUCCESS', - 'url' => $rootpath . $filename, - 'title' => $imgname, - 'original' => 'scrawl.png', - 'type' => '.png', - 'size' => strlen($img), - - ); - } else { - $data = array( - 'state' => 'cant write', - ); - } - return json_encode($data); - } - - /** - * 列出文件夹下所有文件,如果是目录则向下 - */ - private function listFile($config) { - $allowFiles = substr(str_replace(".", "|", join("", $config['allowFiles'])), 1); - $size = isset($_GET['size']) ? htmlspecialchars($_GET['size']) : $config['listSize']; - $start = isset($_GET['start']) ? htmlspecialchars($_GET['start']) : 0; - $end = $start + $size; - - $rootpath = $this->rootpath; - - $path = $config['path']; - $files = \Think\Storage::listFile($rootpath, $path, $allowFiles); - //return $files; - if (!count($files)) { - return json_encode(array( - "state" => "no match file", - "list" => array(), - "start" => $start, - "total" => count($files), - )); - } - - /* 获取指定范围的列表 */ - $len = count($files); - for ($i = min($end, $len) - 1, $list = array(); $i < $len && $i >= 0 && $i >= $start; $i--) { - $list[] = $files[$i]; - } - //倒序 - //for ($i = $end, $list = array(); $i < $len && $i < $end; $i++){ - // $list[] = $files[$i]; - //} - - /* 返回数据 */ - $result = json_encode(array( - "state" => "SUCCESS", - "list" => $list, - "start" => $start, - "total" => count($files), - )); - - return $result; - } - - /** - * - * Enter description here ... - */ - private function saveRemote($config, $fieldName) { - $list = array(); - if (isset($_POST[$fieldName])) { - $source = $_POST[$fieldName]; - } else { - $source = $_GET[$fieldName]; - } - foreach ($source as $imgUrl) { - $upload = new \org\Upload(); - - $imgUrl = htmlspecialchars($imgUrl); - $imgUrl = str_replace("&", "&", $imgUrl); - - //http开头验证 - if (strpos($imgUrl, "http") !== 0) { - $data = array('state' => '不是http链接'); - return json_encode($data); - } - //格式验证(扩展名验证和Content-Type验证) - $fileType = strtolower(strrchr($imgUrl, '.')); - if (!in_array($fileType, $config['allowFiles']) || stristr($heads['Content-Type'], "image")) { - $data = array("state" => "错误文件格式"); - return json_encode($data); - } - - //打开输出缓冲区并获取远程图片 - ob_start(); - $context = stream_context_create( - array('http' => array( - 'follow_location' => false, // don't follow redirects - )) - ); - readfile($imgUrl, false, $context); - $img = ob_get_contents(); - ob_end_clean(); - preg_match("/[\/]([^\/]*)[\.]?[^\.\/]*$/", $imgUrl, $m); - - $path = $this->getFullPath($config['pathFormat']); - if (strlen($img) > $config['maxSize']) { - $data['states'] = 'too large'; - return json_encode($data); - } - - $rootpath = $this->rootpath; - - $imgname = uniqid() . '.png'; - $filename = $path . $imgname; - - $oriName = $m ? $m[1] : ""; - - if (\Think\Storage::put($rootpath, $filename, $img)) { - array_push($list, array( - "state" => 'SUCCESS', - "url" => \Think\Storage::getPath($rootpath, $filename), - "size" => strlen($img), - "title" => $imgname, - "original" => $oriName, - "source" => htmlspecialchars($imgUrl), - )); - } else { - array_push($list, array('state' => '文件写入失败')); - } - } - - /* 返回抓取数据 */ - return json_encode(array( - 'state' => count($list) ? 'SUCCESS' : 'ERROR', - 'list' => $list, - )); - } - - /** - * 规则替换命名文件 - * @param $path - * @return string - */ - private function getFullPath($path) { - //替换日期事件 - $t = time(); - $d = explode('-', date("Y-y-m-d-H-i-s")); - $format = $path; - $format = str_replace("{yyyy}", $d[0], $format); - $format = str_replace("{yy}", $d[1], $format); - $format = str_replace("{mm}", $d[2], $format); - $format = str_replace("{dd}", $d[3], $format); - $format = str_replace("{hh}", $d[4], $format); - $format = str_replace("{ii}", $d[5], $format); - $format = str_replace("{ss}", $d[6], $format); - $format = str_replace("{uid}", $this->uid, $format); - - return $format; - } - - private function format_exts($exts) { - $data = array(); - foreach ($exts as $key => $value) { - $data[] = ltrim($value, '.'); - } - return $data; - } - -} \ No newline at end of file