@@ -0,0 +1,245 @@
|
||||
<?php
|
||||
|
||||
namespace app\admin\controller;
|
||||
|
||||
use app\common\controller\Backend;
|
||||
use app\common\exception\UploadException;
|
||||
|
||||
/**
|
||||
* 百度编辑器上传
|
||||
* Class Upload
|
||||
* @package app\admin\controller
|
||||
*/
|
||||
class Upload extends Backend
|
||||
{
|
||||
// 编辑器初始配置
|
||||
private $config
|
||||
= [
|
||||
/* 上传图片配置项 */
|
||||
'imageActionName' => 'uploadimage',
|
||||
'imageFieldName' => 'upfilesss',
|
||||
'imageMaxSize' => 10485760, /* 上传大小限制,单位B */
|
||||
'imageAllowFiles' => ['.png', '.jpg', '.jpeg', '.gif', '.bmp'],
|
||||
'imageCompressEnable' => false, // 图片压缩功能true开启,false关闭
|
||||
'imageCompressBorder' => 1600,
|
||||
'imageInsertAlign' => 'none',
|
||||
'imageUrlPrefix' => '',
|
||||
'imagePathFormat' => '',
|
||||
/* 涂鸦图片上传配置项 */
|
||||
'scrawlActionName' => 'uploadscrawl',
|
||||
'scrawlFieldName' => 'upfile',
|
||||
'scrawlPathFormat' => '',
|
||||
'scrawlMaxSize' => 0,
|
||||
'scrawlUrlPrefix' => '',
|
||||
'scrawlInsertAlign' => 'none',
|
||||
/* 截图工具上传 */
|
||||
'snapscreenActionName' => 'uploadimage',
|
||||
'snapscreenPathFormat' => '',
|
||||
'snapscreenUrlPrefix' => '',
|
||||
'snapscreenInsertAlign' => 'none',
|
||||
/* 抓取远程图片配置 */
|
||||
'catcherLocalDomain' => ['127.0.0.1', 'localhost', 'img.baidu.com'],
|
||||
'catcherActionName' => 'catchimage',
|
||||
'catcherFieldName' => 'source',
|
||||
'catcherPathFormat' => '',
|
||||
'catcherUrlPrefix' => '',
|
||||
'catcherMaxSize' => 0,
|
||||
'catcherAllowFiles' => ['.png', '.jpg', '.jpeg', '.gif', '.bmp'],
|
||||
/* 上传视频配置 */
|
||||
'videoActionName' => 'uploadvideo',
|
||||
'videoFieldName' => 'upfile',
|
||||
'videoPathFormat' => '',
|
||||
'videoUrlPrefix' => '',
|
||||
'videoMaxSize' => 0,
|
||||
'videoAllowFiles' => [".flv", ".swf", ".mkv", ".avi", ".rm", ".rmvb", ".mpeg", ".mpg", ".ogg", ".ogv", ".mov", ".wmv", ".mp4", ".webm", ".mp3", ".wav", ".mid"],
|
||||
/* 上传文件配置 */
|
||||
'fileActionName' => 'uploadfile',
|
||||
'fileFieldName' => 'upfile',
|
||||
'filePathFormat' => '',
|
||||
'fileUrlPrefix' => '',
|
||||
'fileMaxSize' => 20971520,
|
||||
'fileAllowFiles' => [".doc", ".docx", ".ppt", ".txt", ".xls", ".xlsx", ".pdf", ".rar", ".zip"],
|
||||
/* 列出指定目录下的图片 */
|
||||
'imageManagerActionName' => 'listimage',
|
||||
'imageManagerListPath' => '',
|
||||
'imageManagerListSize' => 20,
|
||||
'imageManagerUrlPrefix' => '',
|
||||
'imageManagerInsertAlign' => 'none',
|
||||
'imageManagerAllowFiles' => ['.png', '.jpg', '.jpeg', '.gif', '.bmp'],
|
||||
/* 列出指定目录下的文件 */
|
||||
'fileManagerActionName' => 'listfile',
|
||||
'fileManagerListPath' => '',
|
||||
'fileManagerUrlPrefix' => '',
|
||||
'fileManagerListSize' => '',
|
||||
'fileManagerAllowFiles' => [".flv", ".swf",],
|
||||
];
|
||||
|
||||
/**
|
||||
* 上传视频
|
||||
* @return \think\response\Json
|
||||
*/
|
||||
public function uploadVideo()
|
||||
{
|
||||
if (!request()->isPost()) {
|
||||
return json(['code' => 4011, 'msg' => '请求方式不正确']);
|
||||
}
|
||||
if (empty($_FILES)) {
|
||||
return json([
|
||||
'code' => 401,
|
||||
'msg' => '请您上传视频'
|
||||
]);
|
||||
}
|
||||
|
||||
// 开始上传
|
||||
$attachment = null;
|
||||
$file = $this->request->file('video');
|
||||
|
||||
try {
|
||||
$upload = new \app\common\library\Upload($file);
|
||||
$attachment = $upload->upload();
|
||||
} catch (UploadException $e) {
|
||||
return json([
|
||||
'code' => 402,
|
||||
'msg' => $e->getMessage()
|
||||
]);
|
||||
}
|
||||
|
||||
return json([
|
||||
'code' => 200,
|
||||
'msg' => '上传成功',
|
||||
'data' => [
|
||||
'name' => $attachment->filename,
|
||||
'video' => $attachment->url
|
||||
]
|
||||
]);
|
||||
}
|
||||
|
||||
// 百度编辑器上传配置
|
||||
public function ueditorUpload()
|
||||
{
|
||||
$action = input('get.action');
|
||||
if (empty($action)) {
|
||||
$this->error('非法操作。');
|
||||
}
|
||||
|
||||
$result = [];
|
||||
switch ($action) {
|
||||
// 加载上传配置
|
||||
case 'config' :
|
||||
$result = $this->config;
|
||||
break;
|
||||
// 上传涂鸦
|
||||
case 'uploadscrawl' :
|
||||
|
||||
break;
|
||||
// 上传图片
|
||||
case 'uploadimage' :
|
||||
// 上传验证
|
||||
$msg = $this->checkUpload($_FILES['upfilesss']['error']);
|
||||
if ($msg !== 'success') {
|
||||
die(json_encode([
|
||||
'state' => $msg
|
||||
]));
|
||||
}
|
||||
// 上传图片、获取图片大小和后缀
|
||||
$file = request()->file('upfilesss');
|
||||
$fileName = $_FILES['upfilesss']['name'];
|
||||
$fileExt = explode('/', $_FILES['upfilesss']['type'])[1];
|
||||
$fileSize = $_FILES['upfilesss']['size'];
|
||||
// 验证图片格式是否合法
|
||||
if (!in_array('.' . $fileExt, $this->config['imageAllowFiles'])) {
|
||||
die(json_encode([
|
||||
'state' => '您上传的图片格式不正确'
|
||||
]));
|
||||
}
|
||||
// 超过10M无法上传
|
||||
if ($fileSize > $this->config['imageMaxSize']) {
|
||||
die(json_encode([
|
||||
'state' => '图片大小不能超过10M'
|
||||
]));
|
||||
}
|
||||
// 开始上传
|
||||
$attachment = null;
|
||||
$file = $this->request->file('upfilesss');
|
||||
try {
|
||||
$upload = new \app\common\library\Upload($file);
|
||||
$attachment = $upload->upload();
|
||||
|
||||
// 获取图片名字作为alt和title
|
||||
$title = substr($fileName, 0, strrpos($fileName, '.'));
|
||||
return json([
|
||||
'state' => 'SUCCESS',
|
||||
'original' => $title,
|
||||
'title' => $title,
|
||||
'url' => config('wxapp.domain') . $attachment->url
|
||||
]);
|
||||
} catch (UploadException $e) {
|
||||
return json([
|
||||
'state' => $file->getError(),
|
||||
'msg' => $e->getMessage()
|
||||
]);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
die(json_encode($result));
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传图片
|
||||
* @return \think\response\Json
|
||||
*/
|
||||
public function uploadImg()
|
||||
{
|
||||
if (!request()->isPost()) {
|
||||
return json(['code' => 4011, 'msg' => '请求方式不正确']);
|
||||
}
|
||||
if (empty($_FILES)) {
|
||||
return json([
|
||||
'code' => 401,
|
||||
'msg' => '请您上传图片'
|
||||
]);
|
||||
}
|
||||
|
||||
// 开始上传
|
||||
$attachment = null;
|
||||
$file = $this->request->file('image');
|
||||
|
||||
try {
|
||||
$upload = new \app\common\library\Upload($file);
|
||||
$attachment = $upload->upload();
|
||||
} catch (UploadException $e) {
|
||||
return json([
|
||||
'code' => 402,
|
||||
'msg' => $e->getMessage()
|
||||
]);
|
||||
}
|
||||
|
||||
return json([
|
||||
'code' => 200,
|
||||
'msg' => '上传成功',
|
||||
'data' => [
|
||||
'name' => $attachment->filename,
|
||||
'url' => $attachment->url
|
||||
]
|
||||
]);
|
||||
}
|
||||
|
||||
// 上传判断
|
||||
private function checkUpload($code)
|
||||
{
|
||||
$codeArr = [
|
||||
'success',
|
||||
'上传文件超出php配置upload_max_filesize限制',
|
||||
'上传文件超出html表单限制',
|
||||
'文件只有部分被上传',
|
||||
'没有上传文件',
|
||||
'没有找不到临时文件夹',
|
||||
'文件写入失败,请检查权限',
|
||||
'php文件上传扩展file没有打开'
|
||||
];
|
||||
|
||||
return $codeArr[$code];
|
||||
}
|
||||
|
||||
}
|
||||
在新工单中引用
屏蔽一个用户