Browse Source

dir create, rename, move, delete and file delete done

master
filesite 2 years ago
parent
commit
34aa18c190
  1. 211
      controller/ApiController.php

211
controller/ApiController.php

@ -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'));
}
}

Loading…
Cancel
Save