Skip to main content
PHP

Subida múltiple de archivos con PHP

Por 22 enero, 2017Sin comentarios
Subida múltiple de archivos con PHP

Desde hace mucho tiempo, uno de los lenguajes de programación de servidor más utilizado (PHP), nos permite de manera sencilla subir archivos al servidor, moverlos de carpeta, renombrarlos, enviarlos por mail, etc…

Incluso editarlos. Cuando subimos un archivo se guarda en una carpeta temporal, pero podemos moverlo a otro directorio propio con move_uploaded_file( ). Con la variable $_FILES podemos sacar el nombre del archivo ($_FILES[«archivo»][«name»]), la carpeta temporal ($_FILES[«archivo»][«tmp_name»]), el tamaño, el tipo de archivo y el error asociado a la subida del fichero.
Imagínate que tenemos un formulario HTML con un input «múltiple» de archivos y queremos mediante PHP enviar el array de archivos a un directorio personal. Uno por uno. Por un lado tenemos nuestro formulario HTML:

<form method="post" action="" enctype="multipart/form-data">
  <input type="file" name="imagen[]" multiple="multiple"/>
  <input type="submit" value="Enviar"/>
</form>

Importante porner el name con «[ ]» para indicar que lo que enviamos es un array. Por otro lado tenemos nuestro código PHP:

<? php
    if($_FILES["imagen"]["name"][0])
    {
        $carpetaDestino = "/subidas/";
        for($i=0;$i&lt;count($_FILES["imagen"]["name"]);$i++)
        {
            $origen = $_FILES["imagen"]["tmp_name"][$i];
            $destino = $carpetaDestino.$_FILES["imagen"]["name"][$i];
            move_uploaded_file($origen,$destino);
        }
        echo true;
    } else {

        echo false;
    }
?>

Lo primero es comprobar si se ha enviado algún archivo. Luego creamos una variable con la carpeta donde vamos a guardar los archivos. Y por último, creamos un bucle for que se ejecute tantas veces como archivos halla. Y las vamos moviendo de uno en uno a la nueva carpeta. Si quisiéramos, también podríamos renombrarlos con .rename( ), por ejemplo, con un número secuencial, que guardamos en una base de datos. En próximos post hablaré de como enviar los múltiples archivos subidos en un mismo email con la función mail(). Y de cuales son los posibles errores a la hora de subir archivos al servidor. ¡Hasta la próxima!

Jairo Calero

Jairo Calero

Desarrollador web frontend y backend, especialista en webs app desarrolladas en PHP y Javascript. Experto en HTML, CSS3, PHP y Javascript con frameworks y librerías como jQuery, Angular y Bootstrap. Gestor de herramientas SEO como Google Analytics, Search Console, SEMrush o Hotjar. Email marketing y Big data.

Deja tu respuesta