Cita:
Iniciado por xfxstudios
Pienso que es un error haber escrito esto por no se que, un aporte es un aporte, incluso todas las soluciones que se dan en el foro a cada pregunta echa es un aporte, porque todo programador se ha encontrado con soluciones de foros del web en algún momento y esta es bastante buena para simplificar algunas tareas con solo llamar a la función, yo solo le realice algunos cambios menores:
Aqui le elimine el nombre del archivo de la ruta porque los subia con la palabra Array en el nombre:
Código PHP:
Ver originalSubirArchivos($archivo_captura, $ruta, $size, $mime_permitidos);
y aqui le agregue el nombre a la ruta al momento de subir el archivo:
Saludos y Gracias por esta función!

Hola de nuevo,
Gracias a ti xfxstudios por tu observación, dejamos aquí como quedaría completo el uso con dicha observación:
Código PHP:
Ver originalfunction SubirArchivos($campo_archivo, $ruta, $size, $permitidos) {
// Función para subir archivos mediante PHP
// USO: SubirArchivos($campo_archivo, $ruta, $size, $permitidos);
// @param $campo_archivo = $_FILES['nombre_campo'];
// @param $ruta = "ruta_de_subida_del_archivo";
// @param $size = "tamaño máximo permitido en bytes"
// @param $permitidos = array(array con los tipos de archivos permitidos); (http://www.freeformatter.com/mime-types-list.html#mime-types-list)
// @return: Solo retorna en caso de error
// Obtener el tipo MIME del archivo enviado por el usuario
$finfo = new finfo(FILEINFO_MIME_TYPE);
$mime_usuario = $finfo->file($campo_archivo['tmp_name']);
// Contrastar los tipos MIME
$permitidos = in_array($mime_usuario, $permitidos); // Devolverá true o false
if($permitidos == FALSE) {
// Si el archivo no está en la lista de permitidos, devolvemos error.
return "Error: El archivo enviado no se corresponde a un tipo permitido";
}
// Comprobar que el tamaño no excede el permitido
if ( $campo_archivo['size'] > $size ) {
return "Error: El archivo enviado es mayor de lo permitido";
}
// Si el archivo existe en la ruta, devolvemos error.
if ( file_exists($ruta.$campo_archivo['name']) == TRUE ) { return "Error: Ya existe ese archivo en la ruta definida";
}
// Si el archivo no se puede mover a su ruta, devolvemos error.
$mover_archivo = move_uploaded_file($campo_archivo['tmp_name'], $ruta.$campo_archivo['name']); if ( $mover_archivo === FALSE ) {
return "Error: Problema al subir el archivo";
} elseif ( $mover_archivo === FALSE ) {
return "Error: " . $mover_archivo;
}
return true;
}
Y el formulario:
Código HTML:
Ver original<form name="subir_archivos" id="subir_archivos" method="POST" enctype="multipart/form-data"> <input type="file" name="nombre_del_campo"> <input type="submit" name="subir" id="subir" value=" Subir Archivo ">
Para usarlo, con los datos del formulario de ejemplo, tomando como ruta la carpeta "subidas", permitir archivos de tipo imagen y un tamaño de 2 MB, sería así:
Código PHP:
Ver original// Definir los tipo MIME permitidos para imágenes
$mime_permitidos = array( "image/png",
"mage/tiff",
"image/bmp",
"image/gif",
"image/jpeg",
"image/jpg",
"image/svg",
"image/svg+xml"
);
// Definimos en una variable la ruta
$ruta = "/home/usuario/public_html/subidas/";
// Definimos en una variable el tamaño
$size = 2097152; // 2MB
// Comprobamos si el array $_FILES['nombre_del_campo'] está definido
// y no está vacío y se lo asignamos a una variable local, que será un array
// con todos los índices correspondientes al array $_FILES
if ( isset($_FILES['nombre_del_campo']) && !empty($_FILES['nombre_del_campo']) ) { $archivo_captura = $_FILES['nombre_del_campo'];
}
SubirArchivos($archivo_captura, $ruta, $size, $mime_permitidos);
//Con solo llamar a la función, nos subirá el archivo a la ruta especificada
Muchas gracias a pateketrueke, caricatos y hhs por su inestimable ayuda sin la cual no habría podido terminar este aporte como tal.
Gracias también a xfxstudios por su observación, la verdad es que yo la probé y no me ocurría eso, pero xfxstudios tiene razón, así está mejor
Espero que sea de mucha utilidad a muchas personas.