diff --git a/application/admin/controller/Ueditor.php b/application/admin/controller/Ueditor.php
new file mode 100644
index 000000000..7f00affb6
--- /dev/null
+++ b/application/admin/controller/Ueditor.php
@@ -0,0 +1,58 @@
+IsLogin();
+ }
+
+ /**
+ * 运行入口
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2019-08-06
+ * @desc description
+ */
+ public function Index()
+ {
+ $ret = UeditorService::Run(input());
+ if($ret['code'] == 0)
+ {
+ return json($ret['data']);
+ }
+ return $ret['msg'];
+ }
+}
+?>
\ No newline at end of file
diff --git a/application/admin/view/default/article/save_info.html b/application/admin/view/default/article/save_info.html
index 2add22bdd..66e889a2d 100755
--- a/application/admin/view/default/article/save_info.html
+++ b/application/admin/view/default/article/save_info.html
@@ -50,7 +50,7 @@
-
+
diff --git a/application/admin/view/default/customview/save_info.html b/application/admin/view/default/customview/save_info.html
index 0f5304595..f3ac2f25b 100755
--- a/application/admin/view/default/customview/save_info.html
+++ b/application/admin/view/default/customview/save_info.html
@@ -41,7 +41,7 @@
-
+
diff --git a/application/admin/view/default/public/footer.html b/application/admin/view/default/public/footer.html
index e954f4d31..919224a45 100755
--- a/application/admin/view/default/public/footer.html
+++ b/application/admin/view/default/public/footer.html
@@ -1,5 +1,5 @@
-
+
{{if !empty($plugins_admin_view_common_bottom_data) and is_array($plugins_admin_view_common_bottom_data) and (!isset($is_footer) or $is_footer eq 1)}}
diff --git a/application/api/config/app.php b/application/api/config/app.php
index 5493af479..3ff150461 100755
--- a/application/api/config/app.php
+++ b/application/api/config/app.php
@@ -26,188 +26,5 @@ return [
// 默认JSONP格式返回的处理方法
'default_jsonp_handler' => 'jsonpReturn',
-
- // 百度编辑器配置信息 ueditor
- 'ueditor_config' => [
- // 上传图片配置项
- // 执行上传图片的action名称
- 'imageActionName' => 'uploadimage',
-
- // 提交的图片表单名称
- 'imageFieldName' => 'upfile',
-
- // 上传大小限制,单位B
- 'imageMaxSize' => MyC('home_max_limit_image', 2048000, true),
-
- // 上传图片格式显示
- 'imageAllowFiles' => ['.png', '.jpg', '.jpeg', '.gif', '.bmp'],
-
- // 是否压缩图片,默认是true
- 'imageCompressEnable' => true,
-
- // 图片压缩最长边限制
- 'imageCompressBorder' => 1600,
-
- // 插入的图片浮动方式
- 'imageInsertAlign' => 'none',
-
- // 图片访问路径前缀
- 'imageUrlPrefix' => '',
-
- // 上传保存路径,可以自定义保存路径和文件名格式
- 'imagePathFormat' => __MY_ROOT_PUBLIC__.'static/upload/images/'.input('path_type', 'other').'/{yyyy}/{mm}/{dd}/{time}{rand:6}',
-
-
- // 涂鸦图片上传配置项
- // 执行上传涂鸦的action名称
- 'scrawlActionName' => 'uploadscrawl',
-
- // 提交的图片表单名称
- 'scrawlFieldName' => 'upfile',
-
- // 上传保存路径,可以自定义保存路径和文件名格式
- 'scrawlPathFormat' => __MY_ROOT_PUBLIC__.'static/upload/images/'.input('path_type', 'other').'/{yyyy}/{mm}/{dd}/{time}{rand:6}',
-
- // 上传大小限制,单位B
- 'scrawlMaxSize' => MyC('home_max_limit_image', 2048000, true),
-
- // 上传图片格式显示
- 'scrawlAllowFiles' => ['.png', '.jpg', '.jpeg', '.gif', '.bmp'],
-
- // 图片访问路径前缀
- 'scrawlUrlPrefix' => '',
-
- // 插入的图片浮动方式
- 'scrawlInsertAlign' => 'none',
-
-
- // 截图工具上传
- // 执行上传截图的action名称
- 'snapscreenActionName' => 'uploadimage',
-
- // 上传保存路径,可以自定义保存路径和文件名格式
- 'snapscreenPathFormat' => __MY_ROOT_PUBLIC__.'static/upload/images/'.input('path_type', 'other').'/{yyyy}/{mm}/{dd}/{time}{rand:6}',
-
- // 图片访问路径前缀
- 'snapscreenUrlPrefix' => '',
-
- // 插入的图片浮动方式
- 'snapscreenInsertAlign' => 'none',
-
-
- // 抓取远程图片配置
- // 执行抓取远程图片的action名称
- 'catcherLocalDomain' => ['127.0.0.1', 'localhost', 'img.baidu.com'],
-
- // 执行抓取远程图片的action名称
- 'catcherActionName' => 'catchimage',
-
- // 提交的图片列表表单名称
- 'catcherFieldName' => 'source',
-
- // 上传保存路径,可以自定义保存路径和文件名格式
- 'catcherPathFormat' => __MY_ROOT_PUBLIC__.'static/upload/images/'.input('path_type', 'other').'/{yyyy}/{mm}/{dd}/{time}{rand:6}',
-
- // 图片访问路径前缀
- 'catcherUrlPrefix' => '',
-
- // 上传大小限制,单位B
- 'catcherMaxSize' => MyC('home_max_limit_image', 2048000, true),
-
- // 抓取图片格式显示
- 'catcherAllowFiles' => ['.png', '.jpg', '.jpeg', '.gif', '.bmp'],
-
-
- // 上传视频配置
- // 执行上传视频的action名称
- 'videoActionName' => 'uploadvideo',
-
- // 提交的视频表单名称
- 'videoFieldName' => 'upfile',
-
- // 上传保存路径,可以自定义保存路径和文件名格式
- 'videoPathFormat' => __MY_ROOT_PUBLIC__.'static/upload/video/'.input('path_type', 'other').'/{yyyy}/{mm}/{dd}/{time}{rand:6}',
-
- // 视频访问路径前缀
- 'videoUrlPrefix' => '',
-
- // 上传大小限制,单位B,默认100MB
- 'videoMaxSize' => MyC('home_max_limit_video', 102400000, true),
-
- // 上传视频格式显示
- 'videoAllowFiles' => ['.swf', '.ogg', '.ogv', '.mp4', '.webm', '.mp3'],
-
-
- // 上传文件配置
- // controller里,执行上传视频的action名称
- 'fileActionName' => 'uploadfile',
-
- // 提交的文件表单名称
- 'fileFieldName' => 'upfile',
-
- // 上传保存路径,可以自定义保存路径和文件名格式
- 'filePathFormat' => __MY_ROOT_PUBLIC__.'static/upload/file/'.input('path_type', 'other').'/{yyyy}/{mm}/{dd}/{time}{rand:6}',
-
- // 文件访问路径前缀
- 'fileUrlPrefix' => '',
-
- // 上传大小限制,单位B,默认50MB
- 'fileMaxSize' => MyC('home_max_limit_file', 51200000, true),
-
- // 上传文件格式显示
- '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'],
-
-
- // 列出指定目录下的图片
- // 执行图片管理的action名称
- 'imageManagerActionName'=> 'listimage',
-
- // 指定要列出图片的目录
- 'imageManagerListPath' => __MY_ROOT_PUBLIC__.'static/upload/images/'.input('path_type', 'other').'/',
-
- // 每次列出文件数量
- 'imageManagerListSize' => 20,
-
- // 图片访问路径前缀
- 'imageManagerUrlPrefix' => '',
-
- // 插入的图片浮动方式
- 'imageManagerInsertAlign'=> 'none',
-
- // 列出的文件类型
- 'imageManagerAllowFiles'=> ['.png', '.jpg', '.jpeg', '.gif', '.bmp'],
-
-
- // 列出指定目录下的文件
- // 执行文件管理的action名称
- 'fileManagerActionName' => 'listfile',
-
- // 指定要列出文件的目录
- 'fileManagerListPath' => __MY_ROOT_PUBLIC__.'static/upload/file/'.input('path_type', 'other').'/',
-
- // 文件访问路径前缀
- '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'],
-
- // 执行视频管理的action名称
- 'videoManagerActionName' => 'listvideo',
-
- // 指定要列出文件的目录
- 'videoManagerListPath' => __MY_ROOT_PUBLIC__.'static/upload/video/'.input('path_type', 'other').'/',
-
- // 文件访问路径前缀
- 'videoManagerUrlPrefix' => '',
-
- // 每次列出文件数量
- 'videoManagerListSize' => 20,
-
- // 列出的文件类型
- 'videoManagerAllowFiles' => ['.swf', '.ogg', '.ogv', '.mp4', '.webm', '.mp3'],
- ],
];
?>
\ No newline at end of file
diff --git a/application/api/controller/Ueditor.php b/application/api/controller/Ueditor.php
index c6921d0a5..b213ded79 100755
--- a/application/api/controller/Ueditor.php
+++ b/application/api/controller/Ueditor.php
@@ -10,11 +10,10 @@
// +----------------------------------------------------------------------
namespace app\api\controller;
-use think\facade\Hook;
-use app\service\ResourcesService;
+use app\service\UeditorService;
/**
- * 百度编辑器控制器入口
+ * 附件上传
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
@@ -22,10 +21,6 @@ use app\service\ResourcesService;
*/
class Ueditor extends Common
{
- private $current_action;
- private $current_config;
- private $current_result;
-
/**
* 构造方法
* @author Devil
@@ -37,328 +32,22 @@ class Ueditor extends Common
{
// 调用父类前置方法
parent::__construct();
+
+ // 是否登录
+ $this->IsLogin();
}
- /**
- * [Index 附件上传入口]
- * @author Devil
- * @blog http://gong.gg/
- * @version 0.0.1
- * @datetime 2016-12-06T21:31:53+0800
+ /**
+ * 运行入口
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2019-08-06
+ * @desc description
*/
public function Index()
{
- // 配置信息
- $this->current_config = config('ueditor_config');
- $this->current_action = input('action');
-
- // action
- switch($this->current_action)
- {
- // 配置信息
- case 'config':
- $this->current_result = json_encode($this->current_config);
- break;
-
- /* 上传图片 */
- case 'uploadimage':
- /* 上传涂鸦 */
- case 'uploadscrawl':
- /* 上传视频 */
- case 'uploadvideo':
- /* 上传文件 */
- case 'uploadfile':
- $this->ActionUpload();
- break;
-
- /* 列出图片 */
- case 'listimage':
- /* 列出文件 */
- case 'listfile':
- /* 列出视频 */
- case 'listvideo':
- $this->ActionList();
- break;
-
- /* 抓取远程文件 */
- case 'catchimage':
- $this->ActionCrawler();
- break;
-
- /* 删除文件 */
- case 'deletefile':
- $this->DeleteFile();
- break;
-
- default:
- $this->current_result = json_encode(array(
- 'state'=> '请求地址出错'
- ));
- }
-
- // 输出结果
- if(input('callback'))
- {
- if(preg_match("/^[\w_]+$/", input('callback')))
- {
- echo htmlspecialchars(input('callback')) . '(' . $this->current_result . ')';
- } else {
- echo json_encode(array(
- 'state'=> 'callback参数不合法'
- ));
- }
- } else {
- echo $this->current_result;
- }
- exit();
- }
-
- /**
- * 文件删除
- * @author Devil
- * @blog http://gong.gg/
- * @version 1.0.0
- * @date 2018-12-10
- * @desc description
- */
- private function DeleteFile()
- {
- $ret = ResourcesService::AttachmentDelete(input());
- if($ret['code'] == 0)
- {
- $this->current_result = json_encode(array(
- 'state'=> 'SUCCESS'
- ));
- } else {
- $this->current_result = json_encode(array(
- 'state'=> $ret['msg']
- ));
- }
- }
-
- /**
- * [ActionUpload 上传配置]
- * @author Devil
- * @blog http://gong.gg/
- * @version 0.0.1
- * @datetime 2017-01-17T22:45:06+0800
- */
- private function ActionUpload()
- {
- $attachment_type = "file";
- switch(htmlspecialchars($this->current_action))
- {
- case 'uploadimage':
- $temp_config = array(
- "pathFormat" => $this->current_config['imagePathFormat'],
- "maxSize" => $this->current_config['imageMaxSize'],
- "allowFiles" => $this->current_config['imageAllowFiles']
- );
- $field_name = $this->current_config['imageFieldName'];
- $attachment_type = "image";
- break;
-
- case 'uploadscrawl':
- $temp_config = array(
- "pathFormat" => $this->current_config['scrawlPathFormat'],
- "maxSize" => $this->current_config['scrawlMaxSize'],
- "allowFiles" => $this->current_config['scrawlAllowFiles'],
- "oriName" => "scrawl.png"
- );
- $field_name = $this->current_config['scrawlFieldName'];
- $attachment_type = "scrawl";
- break;
-
- case 'uploadvideo':
- $temp_config = array(
- "pathFormat" => $this->current_config['videoPathFormat'],
- "maxSize" => $this->current_config['videoMaxSize'],
- "allowFiles" => $this->current_config['videoAllowFiles']
- );
- $field_name = $this->current_config['videoFieldName'];
- $attachment_type = "video";
- break;
-
- case 'uploadfile':
- default:
- $temp_config = array(
- "pathFormat" => $this->current_config['filePathFormat'],
- "maxSize" => $this->current_config['fileMaxSize'],
- "allowFiles" => $this->current_config['fileAllowFiles']
- );
- $field_name = $this->current_config['fileFieldName'];
- $attachment_type = "file";
- }
-
- /* 生成上传实例对象并完成上传 */
- $up = new \base\Uploader($field_name, $temp_config, $attachment_type);
-
- /**
- * 得到上传文件所对应的各个参数,数组结构
- * array(
- * "state" => "", //上传状态,上传成功时必须返回"SUCCESS"
- * "url" => "", //返回的地址
- * "path" => "", //绝对地址
- * "title" => "", //新文件名
- * "original" => "", //原始文件名
- * "type" => "" //文件类型
- * "size" => "", //文件大小
- * "hash" => "", //sha256值
- * )
- */
- $data = $up->getFileInfo();
- if(isset($data['state']) && $data['state'] == 'SUCCESS')
- {
- $data['type'] = $attachment_type;
- $data['path_type'] = empty($this->data_request['path_type']) ? 'other' : $this->data_request['path_type'];
- $ret = ResourcesService::AttachmentAdd($data);
- if($ret['code'] == 0)
- {
- $this->current_result = json_encode($ret['data']);
- } else {
- $this->current_result = json_encode(['state'=>$ret['msg']]);
- }
- } else {
- $this->current_result = json_encode($data);
- }
- }
-
- /**
- * [ActionList 文件列表]
- * @author Devil
- * @blog http://gong.gg/
- * @version 0.0.1
- * @datetime 2017-01-17T22:55:16+0800
- */
- private function ActionList()
- {
- /* 判断类型 */
- switch($this->current_action)
- {
- /* 列出视频 */
- case 'listvideo':
- $allow_files = $this->current_config['videoManagerAllowFiles'];
- $list_size = $this->current_config['videoManagerListSize'];
- $path = $this->current_config['videoManagerListPath'];
- break;
- /* 列出文件 */
- case 'listfile':
- $allow_files = $this->current_config['fileManagerAllowFiles'];
- $list_size = $this->current_config['fileManagerListSize'];
- $path = $this->current_config['fileManagerListPath'];
- break;
-
- /* 列出图片 */
- case 'listimage':
- default:
- $allow_files = $this->current_config['imageManagerAllowFiles'];
- $list_size = $this->current_config['imageManagerListSize'];
- $path = $this->current_config['imageManagerListPath'];
- }
- $allow_files = substr(str_replace(".", "|", join("", $allow_files)), 1);
-
- /* 获取参数 */
- $size = isset($_GET['size']) ? htmlspecialchars($_GET['size']) : $list_size;
- $start = isset($_GET['start']) ? htmlspecialchars($_GET['start']) : 0;
- $end = $start + $size;
-
- // 参数
- $params = [
- 'm' => $start,
- 'n' => $size,
- 'where' => [
- ['type', '=', substr($this->current_action, 4)],
- ['path_type', '=', empty($this->data_request['path_type']) ? 'other' : $this->data_request['path_type']]
- ],
- ];
-
- // 搜索关键字
- if(!empty($this->data_request['keywords']))
- {
- $params['where'][] = ['original', 'like', '%'.$this->data_request['keywords'].'%'];
- }
-
- // 数据初始化
- $data = array(
- 'state' => "没有相关数据",
- 'list' => [],
- 'start' => $start,
- 'total' => ResourcesService::AttachmentTotal($params['where']),
- );
-
- // 获取数据
- $ret = ResourcesService::AttachmentList($params);
- if(!empty($ret['data']))
- {
- $data['state'] = 'SUCCESS';
- $data['list'] = $ret['data'];
- }
-
- $this->current_result = json_encode($data);
- }
-
- /**
- * [ActionCrawler 抓取远程文件]
- * @author Devil
- * @blog http://gong.gg/
- * @version 0.0.1
- * @datetime 2017-01-17T23:08:29+0800
- */
- private function ActionCrawler()
- {
- $temp_config = array(
- "pathFormat" => $this->current_config['catcherPathFormat'],
- "maxSize" => $this->current_config['catcherMaxSize'],
- "allowFiles" => $this->current_config['catcherAllowFiles'],
- "oriName" => "remote.png"
- );
- $field_name = $this->current_config['catcherFieldName'];
-
- /* 抓取远程图片 */
- $list = array();
- $source = isset($_POST[$field_name]) ? $_POST[$field_name] : $_GET[$field_name];
- foreach($source as $imgUrl)
- {
- $item = new \base\Uploader($imgUrl, $temp_config, "remote");
- /**
- * 得到上传文件所对应的各个参数,数组结构
- * array(
- * "state" => "", //上传状态,上传成功时必须返回"SUCCESS"
- * "url" => "", //返回的地址
- * "path" => "", //绝对地址
- * "title" => "", //新文件名
- * "original" => "", //原始文件名
- * "type" => "" //文件类型
- * "size" => "", //文件大小
- * "hash" => "", //sha256值
- * )
- */
- $data = $up->getFileInfo();
- if(isset($data['state']) && $data['state'] == 'SUCCESS')
- {
- $data['type'] = 'remote';
- $data['path_type'] = empty($this->data_request['path_type']) ? 'other' : $this->data_request['path_type'];
- $ret = ResourcesService::AttachmentAdd($data);
- if($ret['code'] != 0)
- {
- $data['state'] = $ret['msg'];
- }
- }
- array_push($list, array(
- "state" => $data["state"],
- "url" => $data["url"],
- "size" => $data["size"],
- "title" => htmlspecialchars($data["title"]),
- "original" => htmlspecialchars($data["original"]),
- "source" => htmlspecialchars($imgUrl)
- ));
- }
-
- /* 返回抓取数据 */
- $this->current_result = json_encode(array(
- 'state'=> count($list) ? 'SUCCESS':'ERROR',
- 'list'=> $list
- ));
+ return DataReturn('api附件上传接口开发中', 0);
}
}
?>
\ No newline at end of file
diff --git a/application/common.php b/application/common.php
index 6b1efa115..1d9a78efa 100755
--- a/application/common.php
+++ b/application/common.php
@@ -11,6 +11,51 @@
// 应用公共文件
+/**
+ * 路径解析指定参数
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2019-08-06
+ * @desc description
+ * @param [string] $path [参数字符串 格式如: a/aa/b/bb/c/cc ]
+ * @param [string] $key [指定key]
+ * @param [mixed] $default [默认值]
+ */
+function PathToParams($path, $key = null, $default = null)
+{
+ if(!empty($path))
+ {
+ if(substr($path, 0, 1) == '/')
+ {
+ $path = mb_substr($path, 1, mb_strlen($path, 'utf-8')-1, 'utf-8');
+ }
+ $position = strrpos($path, '.');
+ if($position !== false)
+ {
+ $path = mb_substr($path, 0, $position, 'utf-8');
+ }
+ $arr = explode('/', $path);
+
+ $data = [];
+ $index = 0;
+ foreach($arr as $k=>$v)
+ {
+ if($index != $k)
+ {
+ $data[$arr[$index]] = $v;
+ $index = $k;
+ }
+ }
+ if($key !== null)
+ {
+ return array_key_exists($key, $data) ? $data[$key] : $default;
+ }
+ return $data;
+ }
+ return null;
+}
+
/**
* 调用插件方法 - 访问为静态
* @author Devil
diff --git a/application/index/controller/Ueditor.php b/application/index/controller/Ueditor.php
new file mode 100644
index 000000000..3ca82bf9b
--- /dev/null
+++ b/application/index/controller/Ueditor.php
@@ -0,0 +1,58 @@
+IsLogin();
+ }
+
+ /**
+ * 运行入口
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2019-08-06
+ * @desc description
+ */
+ public function Index()
+ {
+ $ret = UeditorService::Run(input());
+ if($ret['code'] == 0)
+ {
+ return json($ret['data']);
+ }
+ return $ret['msg'];
+ }
+}
+?>
\ No newline at end of file
diff --git a/application/index/view/default/public/footer.html b/application/index/view/default/public/footer.html
index b2707845e..a071193f5 100755
--- a/application/index/view/default/public/footer.html
+++ b/application/index/view/default/public/footer.html
@@ -1,5 +1,5 @@
-
+
{{if !isset($is_footer) or $is_footer eq 1}}
diff --git a/application/service/UeditorService.php b/application/service/UeditorService.php
new file mode 100644
index 000000000..2d4e3ac92
--- /dev/null
+++ b/application/service/UeditorService.php
@@ -0,0 +1,352 @@
+ '请求地址出错'
+ ];
+ }
+
+ // 输出结果
+ if(!empty($params['callback']))
+ {
+ if(preg_match("/^[\w_]+$/", $params['callback']))
+ {
+ return DataReturn(htmlspecialchars($params['callback']) . '(' . self::$current_result . ')', -1);
+ } else {
+ return DataReturn('callback参数不合法', -1);
+ }
+ }
+ return DataReturn('操作成功', 0, self::$current_result);
+ }
+
+ /**
+ * 文件删除
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 1.0.0
+ * @date 2018-12-10
+ * @desc description
+ */
+ private static function DeleteFile()
+ {
+ $ret = ResourcesService::AttachmentDelete(input());
+ if($ret['code'] == 0)
+ {
+ self::$current_result = [
+ 'state'=> 'SUCCESS'
+ ];
+ } else {
+ self::$current_result = [
+ 'state'=> $ret['msg']
+ ];
+ }
+ }
+
+ /**
+ * [ActionUpload 上传配置]
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 0.0.1
+ * @datetime 2017-01-17T22:45:06+0800
+ */
+ private static function ActionUpload()
+ {
+ $attachment_type = "file";
+ switch(htmlspecialchars(self::$current_action))
+ {
+ case 'uploadimage':
+ $temp_config = array(
+ "pathFormat" => self::$current_config['imagePathFormat'],
+ "maxSize" => self::$current_config['imageMaxSize'],
+ "allowFiles" => self::$current_config['imageAllowFiles']
+ );
+ $field_name = self::$current_config['imageFieldName'];
+ $attachment_type = "image";
+ break;
+
+ case 'uploadscrawl':
+ $temp_config = array(
+ "pathFormat" => self::$current_config['scrawlPathFormat'],
+ "maxSize" => self::$current_config['scrawlMaxSize'],
+ "allowFiles" => self::$current_config['scrawlAllowFiles'],
+ "oriName" => "scrawl.png"
+ );
+ $field_name = self::$current_config['scrawlFieldName'];
+ $attachment_type = "scrawl";
+ break;
+
+ case 'uploadvideo':
+ $temp_config = array(
+ "pathFormat" => self::$current_config['videoPathFormat'],
+ "maxSize" => self::$current_config['videoMaxSize'],
+ "allowFiles" => self::$current_config['videoAllowFiles']
+ );
+ $field_name = self::$current_config['videoFieldName'];
+ $attachment_type = "video";
+ break;
+
+ case 'uploadfile':
+ default:
+ $temp_config = array(
+ "pathFormat" => self::$current_config['filePathFormat'],
+ "maxSize" => self::$current_config['fileMaxSize'],
+ "allowFiles" => self::$current_config['fileAllowFiles']
+ );
+ $field_name = self::$current_config['fileFieldName'];
+ $attachment_type = "file";
+ }
+
+ /* 生成上传实例对象并完成上传 */
+ $up = new \base\Uploader($field_name, $temp_config, $attachment_type);
+
+ /**
+ * 得到上传文件所对应的各个参数,数组结构
+ * array(
+ * "state" => "", //上传状态,上传成功时必须返回"SUCCESS"
+ * "url" => "", //返回的地址
+ * "path" => "", //绝对地址
+ * "title" => "", //新文件名
+ * "original" => "", //原始文件名
+ * "type" => "" //文件类型
+ * "size" => "", //文件大小
+ * "hash" => "", //sha256值
+ * )
+ */
+ $data = $up->getFileInfo();
+ if(isset($data['state']) && $data['state'] == 'SUCCESS')
+ {
+ $data['type'] = $attachment_type;
+ $data['path_type'] = self::$path_type;
+ $ret = ResourcesService::AttachmentAdd($data);
+ if($ret['code'] == 0)
+ {
+ self::$current_result = $ret['data'];
+ } else {
+ self::$current_result = ['state'=>$ret['msg']];
+ }
+ } else {
+ self::$current_result = $data;
+ }
+ }
+
+ /**
+ * [ActionList 文件列表]
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 0.0.1
+ * @datetime 2017-01-17T22:55:16+0800
+ */
+ private static function ActionList()
+ {
+ /* 判断类型 */
+ switch(self::$current_action)
+ {
+ /* 列出视频 */
+ case 'listvideo':
+ $allow_files = self::$current_config['videoManagerAllowFiles'];
+ $list_size = self::$current_config['videoManagerListSize'];
+ $path = self::$current_config['videoManagerListPath'];
+ break;
+ /* 列出文件 */
+ case 'listfile':
+ $allow_files = self::$current_config['fileManagerAllowFiles'];
+ $list_size = self::$current_config['fileManagerListSize'];
+ $path = self::$current_config['fileManagerListPath'];
+ break;
+
+ /* 列出图片 */
+ case 'listimage':
+ default:
+ $allow_files = self::$current_config['imageManagerAllowFiles'];
+ $list_size = self::$current_config['imageManagerListSize'];
+ $path = self::$current_config['imageManagerListPath'];
+ }
+ $allow_files = substr(str_replace(".", "|", join("", $allow_files)), 1);
+
+ /* 获取参数 */
+ $size = isset(self::$params['size']) ? htmlspecialchars(self::$params['size']) : $list_size;
+ $start = isset(self::$params['start']) ? htmlspecialchars(self::$params['start']) : 0;
+ $end = $start + $size;
+
+ // 参数
+ $params = [
+ 'm' => $start,
+ 'n' => $size,
+ 'where' => [
+ ['type', '=', substr(self::$current_action, 4)],
+ ['path_type', '=', self::$path_type]
+ ],
+ ];
+
+ // 搜索关键字
+ if(!empty(self::$params['keywords']))
+ {
+ $params['where'][] = ['original', 'like', '%'.self::$params['keywords'].'%'];
+ }
+
+ // 数据初始化
+ $data = array(
+ 'state' => "没有相关数据",
+ 'list' => [],
+ 'start' => $start,
+ 'total' => ResourcesService::AttachmentTotal($params['where']),
+ );
+
+ // 获取数据
+ $ret = ResourcesService::AttachmentList($params);
+ if(!empty($ret['data']))
+ {
+ $data['state'] = 'SUCCESS';
+ $data['list'] = $ret['data'];
+ }
+
+ self::$current_result = $data;
+ }
+
+ /**
+ * [ActionCrawler 抓取远程文件]
+ * @author Devil
+ * @blog http://gong.gg/
+ * @version 0.0.1
+ * @datetime 2017-01-17T23:08:29+0800
+ */
+ private static function ActionCrawler()
+ {
+ $temp_config = array(
+ "pathFormat" => self::$current_config['catcherPathFormat'],
+ "maxSize" => self::$current_config['catcherMaxSize'],
+ "allowFiles" => self::$current_config['catcherAllowFiles'],
+ "oriName" => "remote.png"
+ );
+ $field_name = self::$current_config['catcherFieldName'];
+
+ /* 抓取远程图片 */
+ $list = array();
+ $source = isset(self::$params[$field_name]) ? self::$params[$field_name] : self::$params[$field_name];
+ foreach($source as $imgUrl)
+ {
+ $item = new \base\Uploader($imgUrl, $temp_config, "remote");
+ /**
+ * 得到上传文件所对应的各个参数,数组结构
+ * array(
+ * "state" => "", //上传状态,上传成功时必须返回"SUCCESS"
+ * "url" => "", //返回的地址
+ * "path" => "", //绝对地址
+ * "title" => "", //新文件名
+ * "original" => "", //原始文件名
+ * "type" => "" //文件类型
+ * "size" => "", //文件大小
+ * "hash" => "", //sha256值
+ * )
+ */
+ $data = $up->getFileInfo();
+ if(isset($data['state']) && $data['state'] == 'SUCCESS')
+ {
+ $data['type'] = 'remote';
+ $data['path_type'] = self::$path_type;
+ $ret = ResourcesService::AttachmentAdd($data);
+ if($ret['code'] != 0)
+ {
+ $data['state'] = $ret['msg'];
+ }
+ }
+ array_push($list, array(
+ "state" => $data["state"],
+ "url" => $data["url"],
+ "size" => $data["size"],
+ "title" => htmlspecialchars($data["title"]),
+ "original" => htmlspecialchars($data["original"]),
+ "source" => htmlspecialchars($imgUrl)
+ ));
+ }
+
+ /* 返回抓取数据 */
+ self::$current_result = [
+ 'state' => count($list) ? 'SUCCESS':'ERROR',
+ 'list' => $list,
+ ];
+ }
+}
+?>
\ No newline at end of file
diff --git a/config/ueditor.php b/config/ueditor.php
new file mode 100644
index 000000000..a56e1e93a
--- /dev/null
+++ b/config/ueditor.php
@@ -0,0 +1,202 @@
+ 'uploadimage',
+
+ // 提交的图片表单名称
+ 'imageFieldName' => 'upfile',
+
+ // 上传大小限制,单位B
+ 'imageMaxSize' => MyC('home_max_limit_image', 2048000, true),
+
+ // 上传图片格式显示
+ 'imageAllowFiles' => ['.png', '.jpg', '.jpeg', '.gif', '.bmp'],
+
+ // 是否压缩图片,默认是true
+ 'imageCompressEnable' => true,
+
+ // 图片压缩最长边限制
+ 'imageCompressBorder' => 1600,
+
+ // 插入的图片浮动方式
+ 'imageInsertAlign' => 'none',
+
+ // 图片访问路径前缀
+ 'imageUrlPrefix' => '',
+
+ // 上传保存路径,可以自定义保存路径和文件名格式
+ 'imagePathFormat' => __MY_ROOT_PUBLIC__.'static/upload/images/'.$path_type.'/{yyyy}/{mm}/{dd}/{time}{rand:6}',
+
+
+ // 涂鸦图片上传配置项
+ // 执行上传涂鸦的action名称
+ 'scrawlActionName' => 'uploadscrawl',
+
+ // 提交的图片表单名称
+ 'scrawlFieldName' => 'upfile',
+
+ // 上传保存路径,可以自定义保存路径和文件名格式
+ 'scrawlPathFormat' => __MY_ROOT_PUBLIC__.'static/upload/images/'.$path_type.'/{yyyy}/{mm}/{dd}/{time}{rand:6}',
+
+ // 上传大小限制,单位B
+ 'scrawlMaxSize' => MyC('home_max_limit_image', 2048000, true),
+
+ // 上传图片格式显示
+ 'scrawlAllowFiles' => ['.png', '.jpg', '.jpeg', '.gif', '.bmp'],
+
+ // 图片访问路径前缀
+ 'scrawlUrlPrefix' => '',
+
+ // 插入的图片浮动方式
+ 'scrawlInsertAlign' => 'none',
+
+
+ // 截图工具上传
+ // 执行上传截图的action名称
+ 'snapscreenActionName' => 'uploadimage',
+
+ // 上传保存路径,可以自定义保存路径和文件名格式
+ 'snapscreenPathFormat' => __MY_ROOT_PUBLIC__.'static/upload/images/'.$path_type.'/{yyyy}/{mm}/{dd}/{time}{rand:6}',
+
+ // 图片访问路径前缀
+ 'snapscreenUrlPrefix' => '',
+
+ // 插入的图片浮动方式
+ 'snapscreenInsertAlign' => 'none',
+
+
+ // 抓取远程图片配置
+ // 执行抓取远程图片的action名称
+ 'catcherLocalDomain' => ['127.0.0.1', 'localhost', 'img.baidu.com'],
+
+ // 执行抓取远程图片的action名称
+ 'catcherActionName' => 'catchimage',
+
+ // 提交的图片列表表单名称
+ 'catcherFieldName' => 'source',
+
+ // 上传保存路径,可以自定义保存路径和文件名格式
+ 'catcherPathFormat' => __MY_ROOT_PUBLIC__.'static/upload/images/'.$path_type.'/{yyyy}/{mm}/{dd}/{time}{rand:6}',
+
+ // 图片访问路径前缀
+ 'catcherUrlPrefix' => '',
+
+ // 上传大小限制,单位B
+ 'catcherMaxSize' => MyC('home_max_limit_image', 2048000, true),
+
+ // 抓取图片格式显示
+ 'catcherAllowFiles' => ['.png', '.jpg', '.jpeg', '.gif', '.bmp'],
+
+
+ // 上传视频配置
+ // 执行上传视频的action名称
+ 'videoActionName' => 'uploadvideo',
+
+ // 提交的视频表单名称
+ 'videoFieldName' => 'upfile',
+
+ // 上传保存路径,可以自定义保存路径和文件名格式
+ 'videoPathFormat' => __MY_ROOT_PUBLIC__.'static/upload/video/'.$path_type.'/{yyyy}/{mm}/{dd}/{time}{rand:6}',
+
+ // 视频访问路径前缀
+ 'videoUrlPrefix' => '',
+
+ // 上传大小限制,单位B,默认100MB
+ 'videoMaxSize' => MyC('home_max_limit_video', 102400000, true),
+
+ // 上传视频格式显示
+ 'videoAllowFiles' => ['.swf', '.ogg', '.ogv', '.mp4', '.webm', '.mp3'],
+
+
+ // 上传文件配置
+ // controller里,执行上传视频的action名称
+ 'fileActionName' => 'uploadfile',
+
+ // 提交的文件表单名称
+ 'fileFieldName' => 'upfile',
+
+ // 上传保存路径,可以自定义保存路径和文件名格式
+ 'filePathFormat' => __MY_ROOT_PUBLIC__.'static/upload/file/'.$path_type.'/{yyyy}/{mm}/{dd}/{time}{rand:6}',
+
+ // 文件访问路径前缀
+ 'fileUrlPrefix' => '',
+
+ // 上传大小限制,单位B,默认50MB
+ 'fileMaxSize' => MyC('home_max_limit_file', 51200000, true),
+
+ // 上传文件格式显示
+ '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'],
+
+
+ // 列出指定目录下的图片
+ // 执行图片管理的action名称
+ 'imageManagerActionName'=> 'listimage',
+
+ // 指定要列出图片的目录
+ 'imageManagerListPath' => __MY_ROOT_PUBLIC__.'static/upload/images/'.$path_type.'/',
+
+ // 每次列出文件数量
+ 'imageManagerListSize' => 20,
+
+ // 图片访问路径前缀
+ 'imageManagerUrlPrefix' => '',
+
+ // 插入的图片浮动方式
+ 'imageManagerInsertAlign'=> 'none',
+
+ // 列出的文件类型
+ 'imageManagerAllowFiles'=> ['.png', '.jpg', '.jpeg', '.gif', '.bmp'],
+
+
+ // 列出指定目录下的文件
+ // 执行文件管理的action名称
+ 'fileManagerActionName' => 'listfile',
+
+ // 指定要列出文件的目录
+ 'fileManagerListPath' => __MY_ROOT_PUBLIC__.'static/upload/file/'.$path_type.'/',
+
+ // 文件访问路径前缀
+ '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'],
+
+ // 执行视频管理的action名称
+ 'videoManagerActionName' => 'listvideo',
+
+ // 指定要列出文件的目录
+ 'videoManagerListPath' => __MY_ROOT_PUBLIC__.'static/upload/video/'.$path_type.'/',
+
+ // 文件访问路径前缀
+ 'videoManagerUrlPrefix' => '',
+
+ // 每次列出文件数量
+ 'videoManagerListSize' => 20,
+
+ // 列出的文件类型
+ 'videoManagerAllowFiles' => ['.swf', '.ogg', '.ogv', '.mp4', '.webm', '.mp3'],
+];
+?>
\ No newline at end of file