Ver Mensaje Individual
  #2 (permalink)  
Antiguo 20/03/2016, 15:03
rbczgz
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: APORTE: Función para subir archivos al servidor con PHP

Hola de nuevo,

Como decimos por aquí: "Mi gozo en un pozo".

Yo quería hacer un aporte que fuese útil para toda la comunidad y resulta que no funciona...

Si alguno de los verdaderos expertos se anima a corregir mi código, sería de agradecer, no creo que a los maestros les resulte nada difícil, yo ya no sé qué hacer... He estado haciendo más pruebas pero no consigo que funcione...

Le he añadido la funcionalidad de comprobar si el directorio de la ruta tiene permisos de escritura:

Código PHP:
Ver original
  1. function SubirArchivos($campo_archivo, $ruta, $size, $permitidos) {
  2. // Función para subir archivos mediante PHP
  3. // USO: SubirArchivos($campo_archivo, $ruta, $size, $permitidos);
  4. // @param $campo_archivo = $_FILES['nombre_campo'];
  5. // @param $ruta = "ruta_de_subida_del_archivo";
  6. // @param $size = "tamaño máximo permitido en bytes"
  7. // @param $permitidos = array(array con los tipos de archivos permitidos); (http://www.freeformatter.com/mime-types-list.html#mime-types-list)
  8. // @return: Solo retorna en caso de error
  9.  
  10.    // Obtener el tipo MIME del archivo enviado por el usuario
  11.    $finfo = new finfo(FILEINFO_MIME_TYPE);
  12.    $mime_usuario = $finfo->file($campo_archivo['tmp_name']);
  13.    
  14.    // Comprobar si la ruta tiene permisos para escribir
  15.    if ( !is_writable($ruta) ) {
  16.       // Si no se puede escribir en ella, devolvemos error
  17.       return "Error: No se puede escribir en el directorio especificado";
  18.       // Contrastar los tipos MIME
  19.       $permitidos = in_array($mime_usuario, $permitidos);  // Devolverá true o false
  20.       if($permitidos == FALSE) {
  21.           // Si el archivo no está en la lista de permitidos, devolvemos error.
  22.           return "Error: El archivo enviado no se corresponde a un tipo permitido";
  23.          // Comprobar que el tamaño no excede el permitido
  24.          if ( $campo_archivo['size'] > $size ) {
  25.              return "Error: El archivo enviado es mayor de lo permitido";
  26.             // Si el archivo existe en la ruta, devolvemos error.
  27.             if ( file_exists($ruta.$campo_archivo['name']) == TRUE ) {
  28.                return "Error: Ya existe ese archivo en la ruta definida";
  29.                // Si el archivo no se puede mover a su ruta, devolvemos error.
  30.                if ( move_uploaded_file($campo_archivo['tmp_name'], $ruta) ) {
  31.                   return "Error: Problema al subir el archivo";
  32.                }
  33.             }
  34.          }
  35.       }
  36.    }
  37. }

Pero sigue sin funcionar... Espero que me podáis corregir...