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

Hola a tod@s,

Mi intención era hacer un aporte de una función para subir archivos al servidor, pudiendo añadir después la programación oportuna para agregar los datos a una base de datos, el caso es que, aparentemente veo todo bien, pero no funciona y no valida su existe ya el archivo o no, bueno, aquí va el código, se aceptan todo tipo de sugerencias para que funcione y dejar un buen aporte para quien lo pueda necesitar:

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.    // Contrastar los tipos MIME
  15.    $permitidos = in_array($mime_usuario, $permitidos);  // Devolverá true o false
  16.    if($permitidos == FALSE) {
  17.        // Si el archivo no está en la lista de permitidos, devolvemos error.
  18.        return "Error: El archivo enviado no se corresponde a un tipo permitido";
  19.       // Comprobar que el tamaño no excede el permitido
  20.       if ( $campo_archivo['size'] > $size ) {
  21.           return "Error: El archivo enviado es mayor de lo permitido";
  22.          // Si el archivo existe en la ruta, devolvemos error.
  23.          if ( file_exists($ruta.$campo_archivo['name']) == TRUE ) {
  24.             return "Error: Ya existe ese archivo en la ruta definida";
  25.             // Si el archivo no se puede mover a su ruta, devolvemos error.
  26.             if ( !move_uploaded_file($campo_archivo['tmp_name'], $ruta) ) {
  27.                return "Error: Problema al subir el archivo";
  28.             }
  29.          }
  30.       }
  31.    }
  32. }

Bueno, espero que con ayuda, podamos compartir esta función que considero muy útil por la cantidad de gente que necesita hacer esto.