php+vue3实现简洁大气的网盘云盘文件管理系统代码
代码语言:php
所属分类:文件
代码描述:php+vue3实现简洁大气的网盘云盘文件管理系统代码,可上传文件单个或多个、可上传目录、可批量删除,还可在线预览播放视频、图片、声音。
代码标签: php vue 简洁 大气 网盘 云盘 文件 管理 系统 代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<?php // ################################################################## // # PHP & Vue3 单文件网盘管理系统 # // # 作者: 专业PHP/HTML全栈工程师 # // # 版本: 1.1 (支持文件和文件夹分别上传) # // ################################################################## // --- 配置区 --- // 设置你希望管理的根目录的绝对路径,结尾不要加'/' $root_dir = '/var/www/html/files'; // <-- Linux 示例: /var/www/my_files // $root_dir = 'C:/www/files'; // <-- Windows 示例: C:/www/files // 身份验证 (可选, 简单的密码保护) // 留空则禁用密码: $password = ''; $password = 'admin'; // 在这里设置你的密码 // --- 配置区结束 --- // --- 后端逻辑处理 --- session_start(); function check_auth() { global $password; if (!empty($password) && (!isset($_SESSION['is_logged_in']) || $_SESSION['is_logged_in'] !== true)) { return false; } return true; } function handle_login() { global $password; if (isset($_POST['password']) && $_POST['password'] === $password) { $_SESSION['is_logged_in'] = true; header('Location: ' . $_SERVER['PHP_SELF']); exit; } return '密码错误'; } if (!empty($password)) { if (isset($_GET['action']) && $_GET['action'] == 'logout') { session_destroy(); header('Location: ' . $_SERVER['PHP_SELF']); exit; } if (!check_auth()) { if (isset($_POST['password'])) { $login_error = handle_login(); } // 显示登录页面 header('Content-Type: text/html; charset=utf-8'); echo <<<HTML <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>登录 - 文件管理系统</title> <style> body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; display: flex; justify-content: center; align-items: center; height: 100vh; background-color: #f0f2f5; margin: 0; } .login-container { background: #fff; padding: 40px; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); text-align: center; } h2 { color: #333; margin-bottom: 20px; } input { width: 100%; padding: 12px; margin-bottom: 20px; border: 1px solid #ddd; border-radius: 4px; box-sizing: border-box; } button { width: 100%; padding: 12px; background-color: #007bff; color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 16px; } button:hover { background-color: #0056b3; } .error { color: #dc3545; margin-top: -10px; margin-bottom: 10px; } </style> </head> <body> <div class="login-container"> <h2>系统登录</h2> <form method="post"> <input type="password" name="password" placeholder="请输入密码" required> <button type="submit">登录</button> </form> HTML; if (isset($login_error)) { echo '<p class="error">' . htmlspecialchars($login_error) . '</p>'; } echo '</div></body></html>'; exit; } } $action = $_GET['action'] ?? ''; if (!empty($action)) { // API请求,关闭HTML输出 error_reporting(0); header('Content-Type: application/json; charset=utf-8'); // 安全函数:确保路径在根目录内 function get_safe_path($path) { global $root_dir; // 移除路径中的 '..' $path = str_replace('..', '', $path); // 拼接成绝对路径 $full_path = $root_dir . $path; // 获取真实路径 $real_path = realpath($full_path); // 检查路径是否以根目录开头,并且是真实存在的路径 if ($real_path === false || strpos($real_path, realpath($root_dir)) !== 0) { // 如果是创建目录,允许路径不存在但父目录必须在根目录内 $parent_real_path = realpath(dirname($full_path)); if ($parent_real_path !== false && strpos($parent_real_path, realpath($root_dir)) === 0) { return $full_path; } return false; } return $real_path; } // 递归删除目录 function delete_recursive($dir) { if (!file_exists($dir)) return true; if (!is_dir($dir)) return unlink($dir); foreach (scandir($dir) as $item) { if ($item == '.' || $item == '..') continue; if (!delete_recursive($dir . DIRECTORY_SEPARATOR . $item)) return false; } return rmdir($dir); } // 格式化文件大小 function format_size($bytes) { if ($bytes >= 1073741824) { return number_format($bytes / 1073741824, 2) . ' GB'; } elseif ($bytes >= 1048576) { return number_format($bytes / 1048576, 2) . ' MB'; } elseif ($bytes >= 1024) { return number_format($bytes / 1024, 2) . ' KB'; } elseif ($bytes > 0) { return $bytes . ' B'; } else { return '0 B'; } } $path = $_GET['path'] ?? '/'; $safe_path = get_safe_path($path); if ($safe_path === false && $action !== 'upload') { // upload action has special path handling echo json_encode(['success' => false, 'message' => '无效或不安全的路径']); exit; } switch ($action) { case 'list': $files = []; $items = scandir($safe_path); foreach ($items as $item) { if ($item === '.' || $item === '..') continue; $item_path = $safe_path . '/' . $item; $is_dir = is_dir($item_path); $files[] = [ 'name' => $item, 'type' => $is_dir ? 'dir' : 'file', 'size' => $is_dir ? '' : format_size(filesize($item_path)), 'mtime' => date('Y-m-d H:i:s', filemtime($item_path)), ]; } // 排序:文件夹在前,文件在后,按名称排序 usort($files.........完整代码请登录后点击上方下载按钮下载查看
网友评论0