isLoginJson(); if (empty($this->adminId)) { echo json_encode($this->backJson(3001, '请登录后,再操作!')); die(); } } /** * 上传图片 */ public function img() { $type = Request::post('type'); $group_id = Request::post('group_id'); if (empty($type)) { return $this->responseMessage(2001, '请选择类型'); } $upload = Request::file('imgFile'); //判断上传的文件类型 if ($upload) { $upload_dir = $this->getUploadDir('img'); if (!file_exists($upload_dir) || !is_dir($upload_dir)) { @mkdir($upload_dir, 0777, true); } $file_name = md5(microtime()) . '.' . $upload->guessExtension(); $upload->move(public_path('static/' . $upload_dir), $file_name); $path = $upload_dir . $file_name; if ($upload->getError()) { die($upload->getErrorMessage()); } // 获取接口信息 $requestData = [ 'group_id' => intval($group_id), 'type' => $type, 'name' => $upload->getClientOriginalName(), 'size' => $upload->getSize(), 'path' => $path ]; $interface = new InterfaceService('sys_media_list', $this->siteAliasName); $isFail = $interface->validator($requestData); if ($isFail) { return $this->responseMessage(2002, $isFail); } // 保存数据库 $this->saveDb($interface, $requestData); return $this->responseMessage(1001, 'success', $path); } else { return $this->responseMessage(2002, '上传失败,请重试!'); } } /** * 上传视频 */ public function video() { $upload = Request::file('file'); //判断上传的文件类型 if ($upload) { $upload_dir = $this->getUploadDir('video'); if (!file_exists($upload_dir) || !is_dir($upload_dir)) { @mkdir($upload_dir, 0777, true); } $file_name = md5(microtime()) . '.' . $upload->guessExtension(); $upload->move(public_path('static/' . $upload_dir), $file_name); if ($upload->getError()) { die($upload->getErrorMessage()); } $path = $upload_dir . $file_name; return $this->responseMessage(1001, 'success', $path); } else { return $this->responseMessage(2002, '上传失败,请重试!'); } } /** * 上传音频 */ public function audio() { $upload = Request::file('file'); //判断上传的文件类型 if ($upload) { $upload_dir = $this->getUploadDir('audio'); if (!file_exists($upload_dir) || !is_dir($upload_dir)) { @mkdir($upload_dir, 0777, true); } $file_name = md5(microtime()) . '.' . $upload->guessExtension(); $upload->move(public_path('static/' . $upload_dir), $file_name); if ($upload->getError()) { die($upload->getErrorMessage()); } $path = $upload_dir . $file_name; return $this->responseMessage(1001, 'success', $path); } else { return $this->responseMessage(2002, '上传失败,请重试!'); } } /** * 上传文档 */ public function doc() { $upload = Request::file('file'); //判断上传的文件类型 if ($upload) { $upload_dir = $this->getUploadDir('doc'); if (!file_exists($upload_dir) || !is_dir($upload_dir)) { @mkdir($upload_dir, 0777, true); } $file_name = md5(microtime()) . '.' . $upload->guessExtension(); $upload->move(public_path('static/' . $upload_dir), $file_name); if ($upload->getError()) { die($upload->getErrorMessage()); } $path = $upload_dir . $file_name; return $this->responseMessage(1001, 'success', $path); } else { return $this->responseMessage(2002, '上传失败,请重试!'); } } /** * 上传图片base64 * * @return String */ public function upBase64() { $base64Data = Request::post('img'); if (empty($base64Data)) { return $this->responseMessage(2001, '上传失败'); } //截取字符串 $base64Data = preg_replace('/data:image\/png;base64,/is', '', $base64Data); $img = base64_decode($base64Data); $upload_dir = $this->getUploadDir('img'); if (!file_exists($upload_dir) || !is_dir($upload_dir)) { @mkdir($upload_dir, 0777, true); } $file_name = md5(microtime()) . '.jpg'; //移动文件 $filePath = public_path('static/' . $upload_dir . '/' . $file_name); if (!(file_put_contents($filePath, $img) && file_exists($filePath))) { //移动失败 return $this->responseMessage(2002, '上传失败,请重试!'); } else { //移动成功 return $this->responseMessage(1001, 'success', $upload_dir . $file_name); } } /** * 保存到数据库 * * @param $interface * @param $data * @return bool * @throws \Exception */ private function saveDb($interface, $data) { $elasticService = new ElasticService($interface); $isSuccess = $elasticService->add($data); return $isSuccess; } /** * 获取当前用户的唯一标识 */ private function getUploadDir($type) { return '/upload/' . substr($this->adminInfo['mid'], 3, 6) . '/' . $type . '/' . mt_rand(0, 99) . '/'; } ################################################################################################################# ##### 百度上传 ##################################################################################################### ################################################################################################################# public function ueditor() { $config_path = config_path('ueditor.json'); $CONFIG = json_decode(preg_replace("/\/\*[\s\S]+?\*\//", "", file_get_contents($config_path)), true); $action = Request::input('action'); // 动态设置图片前缀,显示全路径 $static_url = config('assets.default'); $CONFIG = array_merge($CONFIG, [ 'imageUrlPrefix' => $static_url, 'scrawlUrlPrefix' => $static_url, 'snapscreenUrlPrefix' => $static_url, 'catcherUrlPrefix' => $static_url, 'videoUrlPrefix' => $static_url, 'fileUrlPrefix' => $static_url, 'imageManagerUrlPrefix' => $static_url, 'fileManagerUrlPrefix' => $static_url, ]); switch ($action) { case 'config': $result = json_encode($CONFIG); break; /* 上传图片 */ case 'uploadimage': /* 上传涂鸦 */ case 'uploadscrawl': $result = (new UploadAction($CONFIG, $action))->doUpload(); $result = $this->delStr($result); //保存到数据库 $this->saveToDb(1, 'sys_media_list', $result); break; /* 上传视频 */ case 'uploadvideo': $result = (new UploadAction($CONFIG, $action))->doUpload(); $result = $this->delStr($result); //保存到数据库 $this->saveToDb(2, 'sys_media_list', $result); break; /* 上传文件 */ case 'uploadfile': $result = (new UploadAction($CONFIG, $action))->doUpload(); $result = $this->delStr($result); //保存到数据库 $this->saveToDb(4, 'sys_media_list', $result); break; /* 列出图片 */ case 'listimage': $result = (new ListAction($CONFIG, $action))->doList(); break; /* 列出文件 */ case 'listfile': $result = (new ListAction($CONFIG, $action))->doList(); break; /* 抓取远程文件 */ case 'catchimage': $result = (new CrawlerAction($CONFIG, $action))->doCrawler(); break; default: $result = json_encode(array( 'state' => '请求地址出错' )); break; } /* 输出结果 */ if (isset($_GET["callback"])) { if (preg_match("/^[\w_]+$/", $_GET["callback"])) { echo htmlspecialchars($_GET["callback"]) . '(' . $result . ')'; } else { echo json_encode(array( 'state' => 'callback参数不合法' )); } } else { echo $result; } die(); } /** * 去掉前缀static * @param $result * @return false|string */ private function delStr($result) { $result = json_decode($result, true); if ($result && isset($result['url'])) { $result['url'] = '/' . ltrim($result['url'], '/static'); } return json_encode($result); } /** * 编辑器上传 * * @param $type * @param $alias * @param $result * @throws \Exception */ private function saveToDb($type, $alias, $result) { $result = json_decode($result, true); if (empty($result) || !is_array($result)) { return; } $requestData = [ 'group_id' => 0, 'type' => $type, 'name' => $result['original'] ?? '', 'size' => $result['size'] ?? 0, 'path' => $result['url'] ?? '' ]; try { $interface = new InterfaceService($alias, $this->siteAliasName); $elasticService = new ElasticService($interface); $elasticService->add($requestData); } catch (\Exception $e) { } } }