Ver Mensaje Individual
  #11 (permalink)  
Antiguo 21/03/2016, 15:31
Avatar de pateketrueke
pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: APORTE: Función para subir archivos al servidor con PHP

Pues que raro, porque probé tu código y funcionó perfecto con las correcciones:
Código PHP:
Ver original
  1. <?php
  2.  
  3. function SubirArchivos($campo_archivo, $ruta, $size, $permitidos) {
  4. // Función para subir archivos mediante PHP
  5. // USO: SubirArchivos($campo_archivo, $ruta, $size, $permitidos);
  6. // @param $campo_archivo = $_FILES['nombre_campo'];
  7. // @param $ruta = "ruta_de_subida_del_archivo";
  8. // @param $size = "tamaño máximo permitido en bytes"
  9. // @param $permitidos = array(array con los tipos de archivos permitidos); (http://www.freeformatter.com/mime-types-list.html#mime-types-list)
  10. // @return: Solo retorna en caso de error
  11.  
  12.    // Obtener el tipo MIME del archivo enviado por el usuario
  13.    $finfo = new finfo(FILEINFO_MIME_TYPE);
  14.    $mime_usuario = $finfo->file($campo_archivo['tmp_name']);
  15.  
  16.     // Comprobar si la ruta tiene permisos para escribir
  17.     if (!is_writable($ruta) ) {
  18.       // Si no se puede escribir en ella, devolvemos error
  19.       return "Error: No se puede escribir en el directorio especificado";
  20.     }
  21.  
  22.     // Contrastar los tipos MIME
  23.     $permitidos = in_array($mime_usuario, $permitidos);  // Devolverá true o false
  24.  
  25.     if($permitidos == FALSE) {
  26.       // Si el archivo no está en la lista de permitidos, devolvemos error.
  27.       return "Error: El archivo enviado no se corresponde a un tipo permitido";
  28.     }
  29.  
  30.     // Comprobar que el tamaño no excede el permitido
  31.     if ( $campo_archivo['size'] > $size ) {
  32.       return "Error: El archivo enviado es mayor de lo permitido";
  33.     }
  34.  
  35.     // Si el archivo existe en la ruta, devolvemos error.
  36.     if ( file_exists($ruta.$campo_archivo['name']) == TRUE ) {
  37.       return "Error: Ya existe ese archivo en la ruta definida";
  38.     }
  39.  
  40.     // Si el archivo no se puede mover a su ruta, devolvemos error.
  41.     if (!move_uploaded_file($campo_archivo['tmp_name'], $ruta) ) {
  42.       return "Error: Problema al subir el archivo";
  43.     }
  44.  
  45.   return true;
  46. }
  47.  
  48. if (!empty($_POST)) {
  49.   var_dump(SubirArchivos($_FILES['test'], __DIR__, 2000, array(
  50.     'text/plain',
  51.     'image/png'
  52.   )));
  53. }
  54.  
  55. ?>
  56.  
  57. <form method="post" enctype="multipart/form-data">
  58.   <input type="file" name="test">
  59.   <input type="submit" name="ok">
  60. </form>

Si no te funciona será por algo que no se alcanza a entender con sólo leer tu código, mientras tengas un entorno de desarrollo mal configurado seguirás culpando cualquier cosa.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.