<?php
// upload.php - Sube cualquier archivo al directorio actual

// Directorio actual donde se subirán los archivos
$directorio_actual = __DIR__ . '/';

// Procesar si se envió un archivo
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_FILES['archivo'])) {
    $archivo = $_FILES['archivo'];
    $nombre_original = $archivo['name'];
    $temporal = $archivo['tmp_name'];
    $error = $archivo['error'];
    $tamano = $archivo['size'];
    
    // Si no hay errores
    if ($error === UPLOAD_ERR_OK) {
        // Crear nombre único para evitar sobreescritura
        $nombre_unico = uniqid() . '_' . $nombre_original;
        $ruta_destino = $directorio_actual . $nombre_unico;
        
        // Mover el archivo al directorio
        if (move_uploaded_file($temporal, $ruta_destino)) {
            $mensaje = "✅ ¡Archivo subido con éxito!<br>";
            $mensaje .= "📄 Nombre original: " . htmlspecialchars($nombre_original) . "<br>";
            $mensaje .= "🔗 Guardado como: " . htmlspecialchars($nombre_unico) . "<br>";
            $mensaje .= "💾 Tamaño: " . round($tamano / 1024, 2) . " KB<br>";
            $mensaje .= "📁 Ruta: " . htmlspecialchars($nombre_unico);
            
            // Crear enlace para descargar
            $mensaje .= "<br><br><a href='" . htmlspecialchars($nombre_unico) . "' download>⬇️ Descargar archivo</a>";
        } else {
            $mensaje = "❌ Error al mover el archivo.";
        }
    } else {
        // Manejar errores de subida
        switch ($error) {
            case UPLOAD_ERR_INI_SIZE:
                $mensaje = "❌ El archivo es muy grande (límite del servidor).";
                break;
            case UPLOAD_ERR_FORM_SIZE:
                $mensaje = "❌ El archivo es muy grande (límite del formulario).";
                break;
            case UPLOAD_ERR_PARTIAL:
                $mensaje = "❌ El archivo se subió parcialmente.";
                break;
            case UPLOAD_ERR_NO_FILE:
                $mensaje = "❌ No se seleccionó ningún archivo.";
                break;
            default:
                $mensaje = "❌ Error desconocido al subir el archivo.";
        }
    }
}
?>

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Subir Cualquier Archivo 🚀</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
        }
        
        body {
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            min-height: 100vh;
            display: flex;
            justify-content: center;
            align-items: center;
            padding: 20px;
        }
        
        .container {
            background: white;
            border-radius: 20px;
            box-shadow: 0 20px 60px rgba(0,0,0,0.3);
            padding: 40px;
            width: 100%;
            max-width: 600px;
            text-align: center;
        }
        
        h1 {
            color: #333;
            margin-bottom: 30px;
            font-size: 2.5em;
        }
        
        h1 i {
            color: #667eea;
            margin-right: 10px;
        }
        
        .upload-box {
            border: 3px dashed #667eea;
            border-radius: 15px;
            padding: 40px 20px;
            margin-bottom: 30px;
            transition: all 0.3s;
        }
        
        .upload-box:hover {
            background: #f8f9ff;
            border-color: #764ba2;
        }
        
        .upload-icon {
            font-size: 60px;
            color: #667eea;
            margin-bottom: 20px;
        }
        
        .file-input {
            display: none;
        }
        
        .file-label {
            display: inline-block;
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
            color: white;
            padding: 15px 40px;
            border-radius: 50px;
            cursor: pointer;
            font-size: 1.1em;
            font-weight: bold;
            transition: transform 0.3s;
        }
        
        .file-label:hover {
            transform: translateY(-3px);
        }
        
        .submit-btn {
            background: linear-gradient(135deg, #4CAF50 0%, #45a049 100%);
            color: white;
            border: none;
            padding: 18px 60px;
            border-radius: 50px;
            font-size: 1.2em;
            font-weight: bold;
            cursor: pointer;
            transition: transform 0.3s;
            width: 100%;
            margin-top: 20px;
        }
        
        .submit-btn:hover {
            transform: translateY(-3px);
            box-shadow: 0 10px 20px rgba(76, 175, 80, 0.3);
        }
        
        .message {
            margin-top: 30px;
            padding: 20px;
            border-radius: 10px;
            background: #f0f0f0;
            text-align: left;
            font-size: 1em;
            line-height: 1.6;
        }
        
        .success {
            background: #d4edda;
            border-left: 5px solid #28a745;
        }
        
        .error {
            background: #f8d7da;
            border-left: 5px solid #dc3545;
        }
        
        .file-info {
            display: inline-block;
            margin-top: 15px;
            padding: 10px;
            background: #f8f9ff;
            border-radius: 8px;
            max-width: 80%;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }
        
        .info-box {
            background: #e7f3ff;
            border-radius: 10px;
            padding: 20px;
            margin-bottom: 30px;
            text-align: left;
            font-size: 0.9em;
            color: #555;
        }
        
        .info-box h3 {
            color: #667eea;
            margin-bottom: 10px;
            display: flex;
            align-items: center;
        }
        
        .info-box ul {
            padding-left: 20px;
        }
        
        .info-box li {
            margin-bottom: 8px;
        }
        
        @keyframes fadeIn {
            from { opacity: 0; transform: translateY(20px); }
            to { opacity: 1; transform: translateY(0); }
        }
        
        .container {
            animation: fadeIn 0.5s ease-out;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1><i>📁</i> Subidor Universal</h1>
        
        <div class="info-box">
            <h3><i>ℹ️</i> Características:</h3>
            <ul>
                <li>✅ Acepta CUALQUIER tipo de archivo (sin restricciones)</li>
                <li>✅ Tamaño máximo: Configuración del servidor (normalmente varios GB)</li>
                <li>✅ Nombres únicos automáticos para evitar conflictos</li>
                <li>✅ Se sube al mismo directorio donde está este script</li>
                <li>✅ Interfaz moderna y responsive</li>
            </ul>
        </div>
        
        <form action="" method="POST" enctype="multipart/form-data">
            <div class="upload-box">
                <div class="upload-icon">📤</div>
                <input type="file" name="archivo" id="archivo" class="file-input" required>
                <label for="archivo" class="file-label">
                    📎 Seleccionar Archivo
                </label>
                <div id="fileName" class="file-info"></div>
            </div>
            
            <button type="submit" class="submit-btn">
                🚀 Subir Archivo
            </button>
        </form>
        
        <?php if (isset($mensaje)): ?>
            <div class="message <?php echo strpos($mensaje, '✅') !== false ? 'success' : 'error'; ?>">
                <?php echo $mensaje; ?>
            </div>
        <?php endif; ?>
    </div>

    <script>
        // Mostrar nombre del archivo seleccionado
        document.getElementById('archivo').addEventListener('change', function(e) {
            var fileName = e.target.files[0].name;
            document.getElementById('fileName').textContent = '📄 ' + fileName;
            document.getElementById('fileName').title = fileName;
        });
        
        // Validación básica del formulario
        document.querySelector('form').addEventListener('submit', function(e) {
            var fileInput = document.getElementById('archivo');
            if (!fileInput.value) {
                e.preventDefault();
                alert('⚠️ Por favor, selecciona un archivo antes de subir.');
                return false;
            }
        });
    </script>
</body>
</html>