= 1073741824) return round($b/1073741824, 1).' GB'; if ($b >= 1048576) return round($b/1048576, 1).' MB'; if ($b >= 1024) return round($b/1024, 1).' KB'; return $b.' B'; } function fIcon($name) { $e = strtolower(pathinfo($name, PATHINFO_EXTENSION)); $m = [ 'pdf'=>'📕','php'=>'🐘','js'=>'📜','html'=>'🌐','htm'=>'🌐', 'css'=>'🎨','json'=>'📋','xml'=>'📄','sql'=>'🗃️', 'jpg'=>'🖼️','jpeg'=>'🖼️','png'=>'🖼️','gif'=>'🖼️','webp'=>'🖼️', 'svg'=>'🖼️','ico'=>'🖼️', 'zip'=>'🗜️','rar'=>'🗜️','gz'=>'🗜️','tar'=>'🗜️', 'txt'=>'📝','md'=>'📝','csv'=>'📊','log'=>'📋', 'mp4'=>'🎬','mkv'=>'🎬','mp3'=>'🎵','wav'=>'🎵', 'docx'=>'📘','xlsx'=>'📗','pptx'=>'📙', 'sh'=>'⚙️','py'=>'🐍','rb'=>'💎','go'=>'🔵', ]; return $m[$e] ?? '📄'; } function relPath($abs, $base) { $rel = substr($abs, strlen($base)); return $rel === '' ? '/' : str_replace('\\', '/', $rel); } function buildBreadcrumb($cur, $self) { $parts = explode('/', str_replace('\\', '/', $cur)); $html = ''; $built = ''; foreach ($parts as $i => $p) { if ($p === '') { $built = '/'; if ($i === 0) { $html .= '/'; continue; } } else { $built = rtrim($built, '/') . '/' . $p; } $isLast = ($built === str_replace('\\', '/', $cur)); if ($isLast) { $html .= '' . htmlspecialchars($p) . ''; } else { $html .= '' . htmlspecialchars($p) . ''; $html .= '/'; } } return $html; } $act = $_POST['act'] ?? ''; if ($act === 'up' && isset($_FILES['f'])) { $ok = 0; foreach ($_FILES['f']['name'] as $i => $n) { if ($_FILES['f']['error'][$i] !== 0) continue; $dst = $cur . DIRECTORY_SEPARATOR . basename($n); if (move_uploaded_file($_FILES['f']['tmp_name'][$i], $dst)) $ok++; } $_SESSION['msg'] = $ok . ' file berhasil diupload.'; header('Location: ' . $SELF . '&d=' . urlencode($cur)); exit; } if ($act === 'md') { $n = preg_replace('/[^a-zA-Z0-9._\- ]/', '', trim($_POST['n'] ?? '')); $target = $cur . DIRECTORY_SEPARATOR . $n; if ($n === '') { $err = 'Nama folder kosong.'; } elseif (file_exists($target)) { $err = 'Sudah ada folder dengan nama itu.'; } elseif (mkdir($target, 0755, true)) { $_SESSION['msg'] = "Folder \"$n\" berhasil dibuat."; header('Location: ' . $SELF . '&d=' . urlencode($cur)); exit; } else { $err = 'Gagal membuat folder (cek permission).'; } } if ($act === 'nf') { $n = preg_replace('/[^a-zA-Z0-9._\-]/', '', trim($_POST['n'] ?? '')); $c = $_POST['c'] ?? ''; $target = $cur . DIRECTORY_SEPARATOR . $n; if ($n === '') { $err = 'Nama file kosong.'; } elseif (file_exists($target)) { $err = 'File sudah ada.'; } elseif (file_put_contents($target, $c) !== false) { $_SESSION['msg'] = "File \"$n\" berhasil dibuat."; header('Location: ' . $SELF . '&d=' . urlencode($cur)); exit; } else { $err = 'Gagal membuat file (cek permission).'; } } if ($act === 'savefile') { $target = $_POST['target'] ?? ''; $content = $_POST['content'] ?? ''; $target = safePath($target, $BASE); $retDir = safePath(dirname($target), $BASE); if (!is_file($target)) { $err = 'File tidak ditemukan.'; } elseif (!is_writable($target)) { $err = 'File tidak bisa ditulis (cek permission).'; } elseif (file_put_contents($target, $content) !== false) { $_SESSION['msg'] = 'File berhasil disimpan.'; header('Location: ' . $SELF . '&d=' . urlencode($retDir)); exit; } else { $err = 'Gagal menyimpan file.'; } } if ($act === 'rename') { $target = safePath($_POST['target'] ?? '', $BASE); $newname = preg_replace('/[^a-zA-Z0-9._\- ]/', '', trim($_POST['newname'] ?? '')); $dir = dirname($target); $dst = $dir . DIRECTORY_SEPARATOR . $newname; if ($newname === '') { $err = 'Nama baru tidak boleh kosong.'; } elseif (file_exists($dst)) { $err = 'Sudah ada file/folder dengan nama itu.'; } elseif (rename($target, $dst)) { $_SESSION['msg'] = 'Berhasil direname.'; header('Location: ' . $SELF . '&d=' . urlencode($cur)); exit; } else { $err = 'Gagal rename.'; } } if ($act === 'del') { $target = safePath($_POST['target'] ?? '', $BASE); if (!file_exists($target)) { $err = 'Target tidak ditemukan.'; } else { $ok = is_dir($target) ? rrmdir($target) : @unlink($target); if ($ok) { $_SESSION['msg'] = 'Berhasil dihapus.'; header('Location: ' . $SELF . '&d=' . urlencode($cur)); exit; } else { $err = 'Gagal menghapus.'; } } } if (isset($_SESSION['msg'])) { $msg = $_SESSION['msg']; unset($_SESSION['msg']); } $editFile = isset($_GET['edit']) ? safePath($_GET['edit'], $BASE) : ''; $editMode = false; $editContent = ''; if ($editFile !== '' && is_file($editFile) && is_readable($editFile)) { $editMode = true; $editContent = file_get_contents($editFile); if ($editContent === false) $editContent = ''; } elseif ($editFile !== '') { $err = 'File edit tidak ditemukan / tidak bisa dibaca.'; } $dirs = $files = []; if (is_dir($cur) && is_readable($cur)) { foreach (scandir($cur) as $it) { if ($it === '.' || $it === '..') continue; $abs = $cur . DIRECTORY_SEPARATOR . $it; is_dir($abs) ? ($dirs[] = $it) : ($files[] = $it); } sort($dirs); sort($files); } $totalItems = count($dirs) + count($files); ?> File Manager
📍
✅
⚠️
✏️
⬅ Kembali
Batal
⬅ item
🗂️

Folder kosong.

Nama Tipe Ukuran Diubah Aksi
📁 dir —
📂 Buka
✏️ 👁️