diff --git a/beike/Admin/Http/Controllers/FilemanagerController.php b/beike/Admin/Http/Controllers/FilemanagerController.php index eb8803d9..f04ed924 100644 --- a/beike/Admin/Http/Controllers/FilemanagerController.php +++ b/beike/Admin/Http/Controllers/FilemanagerController.php @@ -2,6 +2,7 @@ namespace Beike\Admin\Http\Controllers; +use Beike\Admin\Services\FileManagerService; use Illuminate\Http\Request; class FileManagerController extends Controller @@ -9,32 +10,8 @@ class FileManagerController extends Controller public function index(Request $request) { $baseFolder = $request->get('base_folder'); + $data = (new FileManagerService)->getFiles($baseFolder); - $fileBasePath = public_path('catalog'); - if ($baseFolder) { - $fileBasePath .= '/' . $baseFolder; - } - $files = glob($fileBasePath . '/*'); - - $folders = $images = []; - foreach ($files as $file) { - $baseName = basename($file); - if ($baseName == 'index.html') { - continue; - } - - $fileName = str_replace($fileBasePath, '', $file); - if (is_dir($file)) { - $folders[] = $fileName; - } elseif (is_file($file)) { - $images[] = $fileName; - } - } - - $data = [ - 'folders' => $folders, - 'images' => $images - ]; if ($request->ajax()) { return $data; } diff --git a/beike/Admin/Services/FileManagerService.php b/beike/Admin/Services/FileManagerService.php new file mode 100644 index 00000000..608757ca --- /dev/null +++ b/beike/Admin/Services/FileManagerService.php @@ -0,0 +1,97 @@ + + * @created 2022-07-12 15:12:48 + * @modified 2022-07-12 15:12:48 + */ + +namespace Beike\Admin\Services; + +class FileManagerService +{ + private $fileBasePath = ''; + + + public function __construct() + { + $this->fileBasePath = public_path('catalog'); + } + + + /** + * 获取某个目录下的文件和文件夹 + * + * @param $baseFolder + * @return array + */ + public function getFiles($baseFolder): array + { + $fileBasePath = $this->fileBasePath; + if ($baseFolder) { + $currentBasePath = $fileBasePath . $baseFolder; + } else { + $currentBasePath = $fileBasePath; + } + $files = glob($currentBasePath . '/*'); + + $folders = $images = []; + foreach ($files as $file) { + $baseName = basename($file); + if ($baseName == 'index.html') { + continue; + } + + $fileName = str_replace($fileBasePath, '', $file); + if (is_dir($file)) { + $folders[] = $this->handleFolder($fileName, $baseName); + } elseif (is_file($file)) { + $images[] = $this->handleImage($fileName, $baseName); + } + } + + $data = [ + 'folders' => $folders, + 'images' => $images + ]; + return $data; + } + + + /** + * 处理文件夹 + * + * @param $folderPath + * @param $baseName + * @return array + */ + private function handleFolder($folderPath, $baseName): array + { + return [ + 'path' => $folderPath, + 'name' => $baseName, + 'selected' => false, + ]; + } + + + /** + * 处理文件 + * + * @param $filePath + * @param $baseName + * @return array + */ + private function handleImage($filePath, $baseName): array + { + return [ + 'path' => $filePath, + 'name' => $baseName, + 'url' => image_resize("catalog{$filePath}", 100, 100), + 'selected' => false, + ]; + } +}