| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349 | 
							- <?php
 
- declare(strict_types=1);
 
- /**
 
-  * +----------------------------------------------------------------------
 
-  * | Ueditor编辑器后台控制器制器
 
-  * +----------------------------------------------------------------------
 
-  */
 
- namespace app\sys\controller;
 
- use think\App;
 
- use ueditor\Uploader;
 
- class Ueditor extends Base
 
- {
 
-     protected $config;
 
-     public function __construct(App $app)
 
-     {
 
-         parent::__construct($app);
 
-         $this->config = json_decode(preg_replace("/\/\*[\s\S]+?\*\//", "", file_get_contents($this->app->getRootPath() . "/extend/ueditor/config.json")), true);
 
-     }
 
-     public function index()
 
-     {
 
-         return json($this->config);
 
-     }
 
-     public function config()
 
-     {
 
-         $result = json($this->config);
 
-         return $this->output($result);
 
-     }
 
-     public function uploadimage()
 
-     {
 
-         $result = $this->upload('uploadimage');
 
-         return $this->output($result);
 
-     }
 
-     public function uploadscrawl()
 
-     {
 
-         $result = $this->upload('uploadscrawl');
 
-         return $this->output($result);
 
-     }
 
-     public function uploadvideo()
 
-     {
 
-         $result = $this->upload('uploadvideo');
 
-         return $this->output($result);
 
-     }
 
-     public function uploadfile()
 
-     {
 
-         $result = $this->upload('uploadfile');
 
-         return $this->output($result);
 
-     }
 
-     public function listimage()
 
-     {
 
-         $result = $this->listfiles('listimage');
 
-         return $this->output($result);
 
-     }
 
-     public function listfile()
 
-     {
 
-         $result = $this->listimage('listfile');
 
-         return $this->output($result);
 
-     }
 
-     public function catchimage()
 
-     {
 
-         return $this->crawler();
 
-     }
 
-     /**
 
-      * 输出结果
 
-      */
 
-     public function output($result)
 
-     {
 
-         if (isset($_GET["callback"])) {
 
-             if (preg_match("/^[\w_]+$/", $_GET["callback"])) {
 
-                 return htmlspecialchars($_GET["callback"]) . '(' . $result . ')';
 
-             } else {
 
-                 return json(array(
 
-                     'state' => 'callback参数不合法'
 
-                 ));
 
-             }
 
-         } else {
 
-             return $result;
 
-         }
 
-     }
 
-     /**
 
-      * 空操作
 
-      */
 
-     public function _empty()
 
-     {
 
-         return json([
 
-             'state' => '请求地址出错'
 
-         ]);
 
-     }
 
-     protected function upload($type = "")
 
-     {
 
-         $base64 = "upload";
 
-         switch ($type) {
 
-             case 'uploadimage':
 
-                 $uploadconfig = [
 
-                     "pathFormat" => $this->config['imagePathFormat'],
 
-                     "maxSize" => $this->config['imageMaxSize'],
 
-                     "allowFiles" => $this->config['imageAllowFiles']
 
-                 ];
 
-                 $fieldName = $this->config['imageFieldName'];
 
-                 break;
 
-             case 'uploadscrawl':
 
-                 $uploadconfig = array(
 
-                     "pathFormat" => $this->config['scrawlPathFormat'],
 
-                     "maxSize" => $this->config['scrawlMaxSize'],
 
-                     "allowFiles" => $this->config['scrawlAllowFiles'],
 
-                     "oriName" => "scrawl.png"
 
-                 );
 
-                 $fieldName = $this->config['scrawlFieldName'];
 
-                 $base64 = "base64";
 
-                 break;
 
-             case 'uploadvideo':
 
-                 $uploadconfig = array(
 
-                     "pathFormat" => $this->config['videoPathFormat'],
 
-                     "maxSize" => $this->config['videoMaxSize'],
 
-                     "allowFiles" => $this->config['videoAllowFiles']
 
-                 );
 
-                 $fieldName = $this->config['videoFieldName'];
 
-                 break;
 
-             case 'uploadfile':
 
-             default:
 
-                 $uploadconfig = array(
 
-                     "pathFormat" => $this->config['filePathFormat'],
 
-                     "maxSize" => $this->config['fileMaxSize'],
 
-                     "allowFiles" => $this->config['fileAllowFiles']
 
-                 );
 
-                 $fieldName = $this->config['fileFieldName'];
 
-                 break;
 
-         }
 
-         /* 生成上传实例对象并完成上传 */
 
-         $up = new Uploader($fieldName, $uploadconfig, $base64);
 
-         /**
 
-          * 得到上传文件所对应的各个参数,数组结构
 
-          * array(
 
-          *     "state" => "",          //上传状态,上传成功时必须返回"SUCCESS"
 
-          *     "url" => "",            //返回的地址
 
-          *     "title" => "",          //新文件名
 
-          *     "original" => "",       //原始文件名
 
-          *     "type" => ""            //文件类型
 
-          *     "size" => "",           //文件大小
 
-          * )
 
-          */
 
-         /* 返回数据 */
 
-         return json($up->getFileInfo());
 
-     }
 
-     protected function listfiles($type = "")
 
-     {
 
-         /* 判断类型 */
 
-         switch ($type) {
 
-                 /* 列出文件 */
 
-             case 'listfile':
 
-                 $allowFiles = $this->config['fileManagerAllowFiles'];
 
-                 $listSize = $this->config['fileManagerListSize'];
 
-                 $path = $this->config['fileManagerListPath'];
 
-                 break;
 
-                 /* 列出图片 */
 
-             case 'listimage':
 
-             default:
 
-                 $allowFiles = $this->config['imageManagerAllowFiles'];
 
-                 $listSize = $this->config['imageManagerListSize'];
 
-                 $path = $this->config['imageManagerListPath'];
 
-         }
 
-         $allowFiles = substr(str_replace(".", "|", join("", $allowFiles)), 1);
 
-         /* 获取参数 */
 
-         $size = isset($_GET['size']) ? htmlspecialchars($_GET['size']) : $listSize;
 
-         $start = isset($_GET['start']) ? htmlspecialchars($_GET['start']) : 0;
 
-         $end = $start + $size;
 
-         /* 获取文件列表 */
 
-         $path = $_SERVER['DOCUMENT_ROOT'] . (substr($path, 0, 1) == "/" ? "" : "/") . $path;
 
-         $files = getfiles($path, $allowFiles);
 
-         if (!count($files)) {
 
-             return json(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(array(
 
-             "state" => "SUCCESS",
 
-             "list" => $list,
 
-             "start" => $start,
 
-             "total" => count($files)
 
-         ));
 
-         return $result;
 
-     }
 
-     protected function crawler()
 
-     {
 
-         set_time_limit(0);
 
-         /* 上传配置 */
 
-         $config = array(
 
-             "pathFormat" => $this->config['catcherPathFormat'],
 
-             "maxSize" => $this->config['catcherMaxSize'],
 
-             "allowFiles" => $this->config['catcherAllowFiles'],
 
-             "oriName" => "remote.png"
 
-         );
 
-         $fieldName = $this->config['catcherFieldName'];
 
-         /* 抓取远程图片 */
 
-         $list = array();
 
-         if (isset($_POST[$fieldName])) {
 
-             $source = $_POST[$fieldName];
 
-         } else {
 
-             $source = $_GET[$fieldName];
 
-         }
 
-         foreach ($source as $imgUrl) {
 
-             $item = new Uploader($imgUrl, $config, "remote");
 
-             $info = $item->getFileInfo();
 
-             array_push($list, array(
 
-                 "state" => $info["state"],
 
-                 "url" => $info["url"],
 
-                 "size" => $info["size"],
 
-                 "title" => htmlspecialchars($info["title"]),
 
-                 "original" => htmlspecialchars($info["original"]),
 
-                 "source" => htmlspecialchars($imgUrl)
 
-             ));
 
-         }
 
-         /* 返回抓取数据 */
 
-         return json(array(
 
-             'state' => count($list) ? 'SUCCESS' : 'ERROR',
 
-             'list' => $list
 
-         ));
 
-     }
 
-     public function action($action = "")
 
-     {
 
-         switch ($action) {
 
-             case 'config':
 
-                 $result =  json($this->config);
 
-                 break;
 
-                 /* 上传图片 */
 
-             case 'uploadimage':
 
-                 /* 上传涂鸦 */
 
-             case 'uploadscrawl':
 
-                 /* 上传视频 */
 
-             case 'uploadvideo':
 
-                 /* 上传文件 */
 
-             case 'uploadfile':
 
-                 $result = $this->upload();
 
-                 break;
 
-                 /* 列出图片 */
 
-             case 'listimage':
 
-                 $result = $this->listfiles();
 
-                 break;
 
-                 /* 列出文件 */
 
-             case 'listfile':
 
-                 $result = $this->listfiles();
 
-                 break;
 
-                 /* 抓取远程文件 */
 
-             case 'catchimage':
 
-                 $result = $this->crawler();
 
-                 break;
 
-             default:
 
-                 $result = json(array(
 
-                     'state' => '请求地址出错'
 
-                 ));
 
-                 break;
 
-         }
 
-         /* 输出结果 */
 
-         if (isset($_GET["callback"])) {
 
-             if (preg_match("/^[\w_]+$/", $_GET["callback"])) {
 
-                 return htmlspecialchars($_GET["callback"]) . '(' . $result . ')';
 
-             } else {
 
-                 return json(array(
 
-                     'state' => 'callback参数不合法'
 
-                 ));
 
-             }
 
-         } else {
 
-             return $result;
 
-         }
 
-     }
 
-     // /* 上传图片配置项 */
 
-     // "imageActionName": "uploadimage", /* 执行上传图片的action名称 */
 
-     // /* 涂鸦图片上传配置项 */
 
-     // "scrawlActionName": "uploadscrawl", /* 执行上传涂鸦的action名称 */
 
-     // /* 截图工具上传 */
 
-     // "snapscreenActionName": "uploadimage", /* 执行上传截图的action名称 */
 
-     // /* 抓取远程图片配置 */
 
-     // "catcherLocalDomain": ["127.0.0.1", "localhost", "img.baidu.com"],
 
-     // /* 上传视频配置 */
 
-     // "videoActionName": "uploadvideo", /* 执行上传视频的action名称 */
 
-     // /* 上传文件配置 */
 
-     // "fileActionName": "uploadfile", /* controller里,执行上传视频的action名称 */
 
-     // /* 列出指定目录下的图片 */
 
-     // "imageManagerActionName": "listimage", /* 执行图片管理的action名称 */
 
-     // /* 列出指定目录下的文件 */
 
-     // "fileManagerActionName": "listfile", /* 执行文件管理的action名称 */
 
- }
 
 
  |