has('path')) { $gotopath = $r->path; $path = $gotopath . '/'; $goBack = explode('/', $gotopath); if (count($goBack) == 1) { $goBack = '/'; } else { // remove last path array_pop($goBack); $goBack = implode('/', $goBack); } } else { $path = './'; } return response()->streamJson([ 'files' => $filesystem->listContents($path, $recursive)->sortByPath(), 'goBack' => $goBack ]); } catch (\Exception $exception) { return response()->json([ 'error' => $exception->getMessage(), ], 500); }; } public function createFile(Request $r) { $r->validate([ 'path' => 'required', 'fileType' => 'required|in:directory,file', 'fileName' => 'required', ]); try { // @todo: change to actual user path $path = base_path(); $adapter = new LocalFilesystemAdapter($path, null, LOCK_EX, LocalFilesystemAdapter::DISALLOW_LINKS); $filesystem = new Filesystem($adapter); if ($filesystem->fileExists($r->path . '/' . $r->fileName) || $filesystem->directoryExists($r->path . '/' . $r->fileName)) { throw new \Exception($r->fileType . ' ' . $r->path . '/' . $r->fileName . ' already exists!'); } if ($r->fileType == 'directory') { $filesystem->createDirectory($r->path . '/' . $r->fileName); } else { $filesystem->write($r->path . '/' . $r->fileName, ''); } return response()->json([ 'message' => $r->fileType . ' ' . $r->path . '/' . $r->fileName . ' created successfully!', ]); } catch (\Exception $exception) { return response()->json([ 'error' => $exception->getMessage(), ], 500); }; } }