getDirectories(); $data = hook_filter('admin.file_manager.index.data', $data); return view('admin::pages.file_manager.index', ['directories' => $data]); } /** * 获取某个文件夹下面的文件列表 * * @param Request $request * @return array * @throws \Exception */ public function getFiles(Request $request): array { $baseFolder = $request->get('base_folder'); $sort = $request->get('sort', 'created'); $order = $request->get('order', 'desc'); $page = (int) $request->get('page'); $perPage = (int) $request->get('per_page'); $data = (new FileManagerService)->getFiles($baseFolder, $sort, $order, $page, $perPage); return hook_filter('admin.file_manager.files.data', $data); } /** * 获取文件夹列表 * @param Request $request * @return mixed * @throws \Exception */ public function getDirectories(Request $request) { $baseFolder = $request->get('base_folder'); $data = (new FileManagerService)->getDirectories($baseFolder); return hook_filter('admin.file_manager.directories.data', $data); } /** * 创建文件夹 * POST /admin/file_manager * @throws \Exception */ public function createDirectory(Request $request): array { $folderName = $request->get('name'); (new FileManagerService)->createDirectory($folderName); return json_success(trans('common.created_success')); } /** * 文件或文件夹改名 * PUT /admin/file_manager/rename * @throws \Exception */ public function rename(Request $request): array { $originPath = $request->get('origin_name'); $newPath = $request->get('new_name'); (new FileManagerService)->updateName($originPath, $newPath); return json_success(trans('common.updated_success')); } /** * 删除文件或文件夹 * DELETE /admin/file_manager/files {"path":"/xx/yy", "files":["1.jpg", "2.png"]} * @throws \Exception */ public function destroyFiles(Request $request): array { $requestData = json_decode($request->getContent(), true); $basePath = $requestData['path'] ?? ''; $files = $requestData['files'] ?? []; (new FileManagerService)->deleteFiles($basePath, $files); return json_success(trans('common.deleted_success')); } /** * 删除文件夹 * * @param Request $request * @return array * @throws \Exception */ public function destroyDirectories(Request $request): array { $folderName = $request->get('name'); (new FileManagerService)->deleteDirectoryOrFile($folderName); return json_success(trans('common.deleted_success')); } /** * 上传文件 * POST /admin/file_manager/upload * * @param UploadRequest $request * @return array */ public function uploadFiles(UploadRequest $request): array { $file = $request->file('file'); $savePath = $request->get('path'); $originName = $file->getClientOriginalName(); $filePath = $file->storeAs($savePath, $originName, 'catalog'); return [ 'name' => $originName, 'url' => asset('catalog/' . $filePath), ]; } }