|
|
|
@ -36,7 +36,7 @@ Class ApiController extends Controller {
@@ -36,7 +36,7 @@ Class ApiController extends Controller {
|
|
|
|
|
|
|
|
|
|
$scanner = new DirScanner(); |
|
|
|
|
$scanner->setWebRoot(FSC::$app['config']['content_directory']); |
|
|
|
|
$target = __DIR__ . '//../www/' . FSC::$app['config']['content_directory']; |
|
|
|
|
$target = __DIR__ . '/../www/' . FSC::$app['config']['content_directory']; |
|
|
|
|
$maxLevels = 2; |
|
|
|
|
$dirTree = $scanner->scan($target, $maxLevels); |
|
|
|
|
$scanResults = $scanner->getScanResults(); |
|
|
|
@ -75,4 +75,213 @@ Class ApiController extends Controller {
@@ -75,4 +75,213 @@ Class ApiController extends Controller {
|
|
|
|
|
return $this->renderJson(compact('code', 'msg', 'err', 'data')); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//创建目录 |
|
|
|
|
public function actionMkdir() { |
|
|
|
|
$code = 0; |
|
|
|
|
$msg = $err = ''; |
|
|
|
|
$data = array(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$parentDir = $this->post('parent', ''); |
|
|
|
|
$newDir = $this->post('dir', ''); |
|
|
|
|
$maxDirLen = 20; |
|
|
|
|
if (empty($newDir) || mb_strlen($newDir, 'utf-8') > $maxDirLen) { |
|
|
|
|
$err = "目录名不能为空且最长 {$maxDirLen} 个字符"; |
|
|
|
|
return $this->renderJson(compact('code', 'msg', 'err', 'data')); |
|
|
|
|
}else if (strpos($newDir, '/') !== false) { |
|
|
|
|
$err = "待创建的目录名称中不能包含斜杠字符!"; |
|
|
|
|
return $this->renderJson(compact('code', 'msg', 'err', 'data')); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$target = __DIR__ . '/../www/' . FSC::$app['config']['content_directory']; |
|
|
|
|
if (!empty($parentDir)) { |
|
|
|
|
$target = "{$target}/{$parentDir}"; |
|
|
|
|
} |
|
|
|
|
if (!is_dir($target)) { |
|
|
|
|
$err = "父目录{$parentDir}不存在"; |
|
|
|
|
return $this->renderJson(compact('code', 'msg', 'err', 'data')); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
$res = mkdir("{$target}/{$newDir}"); |
|
|
|
|
if ($res) { |
|
|
|
|
$code = 1; |
|
|
|
|
$msg = '目录创建完成'; |
|
|
|
|
}else { |
|
|
|
|
$err = '目录创建失败,请确认参数格式正确及父目录权限配置正确!'; |
|
|
|
|
} |
|
|
|
|
}catch(Exception $e) { |
|
|
|
|
$err = $e->getMessage(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return $this->renderJson(compact('code', 'msg', 'err', 'data')); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//删除目录 |
|
|
|
|
public function actionRmdir() { |
|
|
|
|
$code = 0; |
|
|
|
|
$msg = $err = ''; |
|
|
|
|
$data = array(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$parentDir = $this->post('parent', ''); |
|
|
|
|
$delDir = $this->post('dir', ''); |
|
|
|
|
$maxDirLen = 20; |
|
|
|
|
if (empty($delDir) || mb_strlen($delDir, 'utf-8') > $maxDirLen) { |
|
|
|
|
$err = "目录名不能为空且最长 {$maxDirLen} 个字符"; |
|
|
|
|
return $this->renderJson(compact('code', 'msg', 'err', 'data')); |
|
|
|
|
}else if (strpos($delDir, '/') !== false) { |
|
|
|
|
$err = "待删除的目录名称中不能包含斜杠字符!"; |
|
|
|
|
return $this->renderJson(compact('code', 'msg', 'err', 'data')); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$target = __DIR__ . '/../www/' . FSC::$app['config']['content_directory']; |
|
|
|
|
if (!empty($parentDir)) { |
|
|
|
|
$target = "{$target}/{$parentDir}"; |
|
|
|
|
} |
|
|
|
|
if (!is_dir($target)) { |
|
|
|
|
$err = "父目录{$parentDir}不存在"; |
|
|
|
|
return $this->renderJson(compact('code', 'msg', 'err', 'data')); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
$res = rmdir("{$target}/{$delDir}"); |
|
|
|
|
if ($res) { |
|
|
|
|
$code = 1; |
|
|
|
|
$msg = '目录删除完成'; |
|
|
|
|
}else { |
|
|
|
|
$err = '目录删除失败,请确认被删除目录存在及父目录权限配置正确!'; |
|
|
|
|
} |
|
|
|
|
}catch(Exception $e) { |
|
|
|
|
$err = $e->getMessage(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return $this->renderJson(compact('code', 'msg', 'err', 'data')); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//移动目录 |
|
|
|
|
public function actionMove() { |
|
|
|
|
$code = 0; |
|
|
|
|
$msg = $err = ''; |
|
|
|
|
$data = array(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$parentDir = $this->post('parent', ''); |
|
|
|
|
$fromDir = $this->post('from', ''); |
|
|
|
|
$toDir = $this->post('to', ''); |
|
|
|
|
$maxDirLen = 50; |
|
|
|
|
if (empty($fromDir) || mb_strlen($fromDir, 'utf-8') > $maxDirLen || empty($toDir) || mb_strlen($toDir, 'utf-8') > $maxDirLen) { |
|
|
|
|
$err = "目录名不能为空且最长 {$maxDirLen} 个字符"; |
|
|
|
|
return $this->renderJson(compact('code', 'msg', 'err', 'data')); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$target = __DIR__ . '/../www/' . FSC::$app['config']['content_directory']; |
|
|
|
|
if (!empty($parentDir)) { |
|
|
|
|
$target = "{$target}/{$parentDir}"; |
|
|
|
|
} |
|
|
|
|
if (!is_dir($target)) { |
|
|
|
|
$err = "父目录{$parentDir}不存在"; |
|
|
|
|
return $this->renderJson(compact('code', 'msg', 'err', 'data')); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
$res = rename("{$target}/{$fromDir}", "{$target}/{$toDir}"); |
|
|
|
|
if ($res) { |
|
|
|
|
$code = 1; |
|
|
|
|
$msg = '目录移动完成'; |
|
|
|
|
}else { |
|
|
|
|
$err = '目录移动失败,请确认被移动目录存在及目标目录权限配置正确!'; |
|
|
|
|
} |
|
|
|
|
}catch(Exception $e) { |
|
|
|
|
$err = $e->getMessage(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return $this->renderJson(compact('code', 'msg', 'err', 'data')); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//重命名目录或文件 |
|
|
|
|
public function actionRename() { |
|
|
|
|
$code = 0; |
|
|
|
|
$msg = $err = ''; |
|
|
|
|
$data = array(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$parentDir = $this->post('parent', ''); |
|
|
|
|
$fromDir = $this->post('from', ''); |
|
|
|
|
$toDir = $this->post('to', ''); |
|
|
|
|
$maxDirLen = 20; |
|
|
|
|
if (empty($fromDir) || mb_strlen($fromDir, 'utf-8') > $maxDirLen || empty($toDir) || mb_strlen($toDir, 'utf-8') > $maxDirLen) { |
|
|
|
|
$err = "目录名不能为空且最长 {$maxDirLen} 个字符"; |
|
|
|
|
return $this->renderJson(compact('code', 'msg', 'err', 'data')); |
|
|
|
|
}else if (strpos($fromDir, '/') !== false || strpos($toDir, '/') !== false) { |
|
|
|
|
$err = "目录名称中不能包含斜杠字符!"; |
|
|
|
|
return $this->renderJson(compact('code', 'msg', 'err', 'data')); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$target = __DIR__ . '/../www/' . FSC::$app['config']['content_directory']; |
|
|
|
|
if (!empty($parentDir)) { |
|
|
|
|
$target = "{$target}/{$parentDir}"; |
|
|
|
|
} |
|
|
|
|
if (!is_dir($target)) { |
|
|
|
|
$err = "父目录{$parentDir}不存在"; |
|
|
|
|
return $this->renderJson(compact('code', 'msg', 'err', 'data')); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
$res = rename("{$target}/{$fromDir}", "{$target}/{$toDir}"); |
|
|
|
|
if ($res) { |
|
|
|
|
$code = 1; |
|
|
|
|
$msg = '目录移动完成'; |
|
|
|
|
}else { |
|
|
|
|
$err = '目录移动失败,请确认被移动目录存在及目标目录权限配置正确!'; |
|
|
|
|
} |
|
|
|
|
}catch(Exception $e) { |
|
|
|
|
$err = $e->getMessage(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return $this->renderJson(compact('code', 'msg', 'err', 'data')); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
//删除文件 |
|
|
|
|
public function actionDelete() { |
|
|
|
|
$code = 0; |
|
|
|
|
$msg = $err = ''; |
|
|
|
|
$data = array(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$parentDir = $this->post('parent', ''); |
|
|
|
|
$delFile = $this->post('file', ''); |
|
|
|
|
$maxDirLen = 30; |
|
|
|
|
if (empty($delFile) || mb_strlen($delFile, 'utf-8') > $maxDirLen) { |
|
|
|
|
$err = "文件名不能为空且最长 {$maxDirLen} 个字符"; |
|
|
|
|
return $this->renderJson(compact('code', 'msg', 'err', 'data')); |
|
|
|
|
}else if (strpos($delFile, '/') !== false) { |
|
|
|
|
$err = "待删除的文件名称中不能包含斜杠字符!"; |
|
|
|
|
return $this->renderJson(compact('code', 'msg', 'err', 'data')); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$target = __DIR__ . '/../www/' . FSC::$app['config']['content_directory']; |
|
|
|
|
if (!empty($parentDir)) { |
|
|
|
|
$target = "{$target}/{$parentDir}"; |
|
|
|
|
} |
|
|
|
|
if (!is_dir($target)) { |
|
|
|
|
$err = "父目录{$parentDir}不存在"; |
|
|
|
|
return $this->renderJson(compact('code', 'msg', 'err', 'data')); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
try { |
|
|
|
|
$res = unlink("{$target}/{$delFile}"); |
|
|
|
|
if ($res) { |
|
|
|
|
$code = 1; |
|
|
|
|
$msg = '文件删除完成'; |
|
|
|
|
}else { |
|
|
|
|
$err = '文件删除失败,请确认被删除文件存在及父目录权限配置正确!'; |
|
|
|
|
} |
|
|
|
|
}catch(Exception $e) { |
|
|
|
|
$err = $e->getMessage(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return $this->renderJson(compact('code', 'msg', 'err', 'data')); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|