= 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 = array(
'pdf'=>'📕','php'=>'🐘','js'=>'📜','html'=>'🌐','htm'=>'🌐',
'css'=>'🎨','json'=>'📋','xml'=>'📄','sql'=>'🗃️',
'jpg'=>'🖼️','jpeg'=>'🖼️','png'=>'🖼️','gif'=>'🖼️','webp'=>'🖼️',
'zip'=>'🗜️','rar'=>'🗜️','gz'=>'🗜️','tar'=>'🗜️',
'txt'=>'📝','md'=>'📝','csv'=>'📊','log'=>'📋',
'mp4'=>'🎬','mp3'=>'🎵','docx'=>'📘','xlsx'=>'📗','pptx'=>'📙',
);
return isset($m[$e]) ? $m[$e] : '📄';
}
// Upload
if ($act === 'up' && isset($_FILES['f'])) {
$ok = 0;
foreach ($_FILES['f']['name'] as $i => $n) {
if ($_FILES['f']['error'][$i] !== 0) continue;
$dst = $cur . '/' . basename($n);
if (move_uploaded_file($_FILES['f']['tmp_name'][$i], $dst)) $ok++;
}
$_SESSION['msg'] = $ok . ' file berhasil diupload.';
header('Location: ?d=' . urlencode($cur));
exit;
}
// Buat folder
if ($act === 'md') {
$n = trim(isset($_POST['n']) ? $_POST['n'] : '');
$n = preg_replace('/[^a-zA-Z0-9._\- ]/', '', $n);
if ($n === '') {
$err = 'Nama folder kosong.';
} elseif (file_exists($cur . '/' . $n)) {
$err = 'Sudah ada.';
} elseif (mkdir($cur . '/' . $n, 0755, true)) {
$_SESSION['msg'] = 'Folder berhasil dibuat.';
header('Location: ?d=' . urlencode($cur));
exit;
} else {
$err = 'Gagal membuat folder.';
}
}
// Buat file
if ($act === 'nf') {
$n = trim(isset($_POST['n']) ? $_POST['n'] : '');
$n = preg_replace('/[^a-zA-Z0-9._\-]/', '', $n);
$c = isset($_POST['c']) ? $_POST['c'] : '';
if ($n === '') {
$err = 'Nama file kosong.';
} elseif (file_exists($cur . '/' . $n)) {
$err = 'File sudah ada.';
} elseif (file_put_contents($cur . '/' . $n, $c) !== false) {
$_SESSION['msg'] = 'File berhasil dibuat.';
header('Location: ?d=' . urlencode($cur));
exit;
} else {
$err = 'Gagal membuat file.';
}
}
// Save edit file
if ($act === 'savefile') {
$target = isset($_POST['target']) ? $_POST['target'] : '';
$content = isset($_POST['content']) ? $_POST['content'] : '';
if ($target === '' || !is_file($target)) {
$err = 'File tidak ditemukan.';
} elseif (!is_writable($target)) {
$err = 'File tidak bisa ditulis.';
} elseif (file_put_contents($target, $content) !== false) {
$_SESSION['msg'] = 'File berhasil disimpan.';
header('Location: ?d=' . urlencode(dirname($target)));
exit;
} else {
$err = 'Gagal menyimpan file.';
}
}
// Delete file / folder
if ($act === 'del') {
$target = isset($_POST['target']) ? $_POST['target'] : '';
if ($target === '' || !file_exists($target)) {
$err = 'Target tidak ditemukan.';
} else {
$ok = false;
if (is_dir($target)) {
$ok = rrmdir($target);
} else {
$ok = @unlink($target);
}
if ($ok) {
$_SESSION['msg'] = 'Berhasil dihapus.';
header('Location: ?d=' . urlencode($cur));
exit;
} else {
$err = 'Gagal menghapus.';
}
}
}
// Flash message
if (isset($_SESSION['msg'])) {
$msg = $_SESSION['msg'];
unset($_SESSION['msg']);
}
// Mode edit
$editFile = isset($_GET['edit']) ? $_GET['edit'] : '';
$editMode = false;
$editContent = '';
if ($editFile !== '') {
if (is_file($editFile) && is_readable($editFile)) {
$editMode = true;
$editContent = file_get_contents($editFile);
if ($editContent === false) $editContent = '';
} else {
$err = 'File edit tidak ditemukan / tidak bisa dibaca.';
}
}
// Daftar isi direktori
$dirs = array();
$files = array();
if (is_dir($cur) && is_readable($cur)) {
$items = scandir($cur);
foreach ($items as $it) {
if ($it === '.' || $it === '..') continue;
$abs = $cur . '/' . $it;
if (is_dir($abs)) {
$dirs[] = $it;
} else {
$files[] = $it;
}
}
sort($dirs);
sort($files);
}
$totalItems = count($dirs) + count($files);
?>
File Manager
✅ = htmlspecialchars($msg) ?>
⚠️ = htmlspecialchars($err) ?>
✏️ Edit File: = htmlspecialchars($editFile) ?>
⬅ Kembali
| Nama |
Tipe |
Ukuran |
Diubah |
Aksi |
|
📁= htmlspecialchars($d) ?>
|
dir |
— |
= date('Y-m-d H:i', (int)filemtime($abs)) ?> |
|
|
= fIcon($f) ?>= htmlspecialchars($f) ?>
|
= htmlspecialchars($ext) ?> |
= fmtSize((int)filesize($abs)) ?> |
= date('Y-m-d H:i', (int)filemtime($abs)) ?> |
|