Ejemplo de upload simple para uno o varios archivos

rocketFileDado que me comentaron aun con el ultimo post que no se aclaraban muy bien como subir archivos esta vez no voy a poner una función si no un código de ejemplo para subir uno o varios archivos a nuestro servidor.
El código es muy fácil y esta muy comentado así que espero que no haya ningún problema en seguirlo o modificarlo.
Se trata de un formulario muy simple con una caja para subir el archivo y un botón de enviar. Se puede modificar y poner todas las cajas que queramos para subir todos los archivos que queramos. Como plus le he incorporado una sentencia que hace que si esa caja esta vacía no se envíe el formulario hasta que se complete.

la segunda parte hace una comprobación de si se ha enviado algún archivo para subir, si es así no pone nuestro formulario y en vez de eso pone todos los datos que podemos obtener de la subida del archivo. Si se ha enviado un archivo para subir pero ocurrió algún error, nos lo indicara también. En caso de no haber enviado nada pondrá el formulario.

Cada echo la lista de echo seguidos de comentarios son todas las variables que podemos usar en nuestro script. En caso de subir varios archivos a la vez este apartado se duplicara por cada archivo subido.

[PHP]







‘;

//direccion donde queremos dejar el archivo
$path = ‘./’;

//si se ha enviado uno o varios archivos no ponemos el formulario
if(count($_FILES)>0) {
//obtenemos todos los archivos uno por uno
foreach($_FILES as $name => $values){

//comprobamos que esten en la carpeta que nosotros queremos
if( move_uploaded_file($values[‘tmp_name’],$path.$values[‘name’]) ){

echo ‘El archivo ha sido subido correctamente.
‘;
echo ‘Otros datos del archivo:
‘;
echo ‘Nombre del objeto del formulario: ‘. $name. ‘
‘;
echo ‘Nombre original del archivo: ‘. $values[‘name’]. ‘
‘;
echo ‘Tipo de archivo: ‘. $values[‘type’]. ‘
‘;
echo ‘Nombre del archivo temporal: ‘. $values[‘tmp_name’]. ‘
‘;
echo ‘Error producido al subir el archivo: ‘. $values[‘error’]. ‘
‘;
echo ‘Tamaño del archivo: ‘. $values[‘size’]. ‘
‘;
echo ‘
‘;

} else {
//si no estan en la carpeta que nosotros queremos
echo ‘Ha ocurrido un error.
‘;

}
}
} else {
//muestra el formulario si no se ha realizado ningun envio de archivo
echo $fomulario;
}
?>


[/PHP]

El método de uso es muy sencillo. Copia el código de arriba, crea un archivo con extensión php, pega el codigo dentro y guardalo.
Una vez realizado esto solo tienes que cambiar el texto asociado a la variable $path de la linea 14 y poner la dirección de donde quieres que se guarden los archivos una vez en el servidor.
Un usuario “anónimo” ha echo un aporte a este articulo indicando que la función copy() no es la mas adecuada para este tipo de casos aun que sea la mas extendida entre los ejemplos. La mas adecuada es move_uploaded_file() como vemos en la linea 22 que realiza una comprobación previa de que el archivo que va a mover ha sido enviado por HTTP POST desde un formulario, y no es un archivo de dentro de nuestro servidor, evitando de esta manera problemas de seguridad.

2 opiniones en “Ejemplo de upload simple para uno o varios archivos”

  1. funciona muy bn .. pero al poner en el form
    onsubmit=”return (this.archivo.value!=\’\’)”
    me muestra Listo pero con Errores y si lo quito del form y actualizo la pagina no sale ese mensaje en la parte inferior… cual sera el posible error ?? gracias…

  2. Hola Ronal, probablemente sea por ese \’\’ que en mi código se usa para imprimir a través del echo(), pero si extraes esa parte del código fuera del PHP las barras ya no serian necesarias.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *