Hola,
 
Arme este script para subir archivos. 
1. Tengo problemas con la funcion, no puedo pasar el parámetro por defecto o estoy concatenando mal. 
2. No puedo validar la extensión del archivo. 
3. Me gustaría, de ser posible, una revisión del script. Sugerencias, etc.    
Código PHP:
Ver original- function upload($ruta = "img/", $titulo = null, $temp = null, $archivo = null) { 
-     #   Existe el directorio?    
-     if (!is_dir("$ruta"  . $titulo)) {   
-         //Creo directorio con permisos 
-             $dirCreado = mkdir("$ruta" . $titulo, 0777);  
-                 //Subo el archivo 
-                 if ($dirCreado) { 
-                 //Subo el archivo 
-                     if ($cargar) { 
-                         echo "Archivo Cargado Correctamente. "; 
-                     } else { 
-                         echo "Error al cargar el archivo. "; 
-                     } 
-                  
-             } else { 
-                 echo "No se puede crear el directorio. <br />"; 
-             } 
-         } else { 
-             echo "El directorio existe. "; 
-         }  
- #   Fin Fx. 
- } 
-   
-   
- if (isset($_FILES['file']) && !empty($_FILES['file'])) { 
-     $archivo = $_FILES['file']; 
-      
-     foreach ($archivo as $clave => $valor) { 
-             foreach ($valor as $key => $value) { 
-                 #echo "$key = $value <br />"; 
-                 $archivoNombre = isset($_FILES['file']['name'][$key]); 
-                 $archivoNombreTemp = isset($_FILES['file']['tmp_name'][$key]); 
-                 $archivoTipo = $_FILES['file']['type'][$key];  
-                 $archivoTamano = isset($_FILES['file']['size'][$key]);  
-                 #echo "$archivoNombre <br />"; 
-     } 
- } 
-   
-     #print_r($archivo); 
-   
-         // Compruebo que el tamaño sea el correcto (en bits) 
-         if ($archivoTamano <= 8192000) { 
-             // Compruebo la extensión del archivo 
-             $extension = preg_match("@image/(gif|pjpeg|jpeg|png|x-png|bmp)$@", $archivoTipo); 
-             if ($archivoTipo == $extension) { 
-                 //Compruebo si hay tamaño en disco { 
-                 if ($espacioDir) { 
-                     /* 
-                      * Cargo el archivo 
-                      * Llamo a la funcion upload() 
-                      * TEST = variable que recibe $_POST['titulo'] del formulario 
-                      */  
-                     $loading = upload("", "Test", "$archivoNombreTemp", "$archivoNombre"); 
-                          
-                     //  Muestro si se cargo correctamente 
-                     if (!$loading) { 
-                         echo "Error el cargar el archivo"; 
-                     } else { echo "Cargado Exitosamente.";} 
-                 } else { echo "No hay espacio en directorio o disco.";} 
-             } else { echo "La extension no es correcta.";} 
-         } else { echo "El archivo es demasiado grande";} 
- } else { echo "Debe seleccionar un archivo.";}