• Como

    Como Subir Archivos en PHP

    En este tutorial vamos a aprender a hacer un upload o subida de archivos usando PHP, nuestro upload tendra la capacidad de filtrar los tipos de archivo y no permitir subidas de mas del tamaño que le definamos, en el ejemplo haremos un script PHP para subir imagenes y luego mostrarlas al usuario.

    Estructura

    Manejaremos una estructura como la de la imagen, es necesario crear una carpeta donde almacenaremos los archivos, le pondremos un nombre determinado(/subidas) que luego definiremos en el script (index.php):

    HTML

    <html>
    <body>
    <form action="" method="post" enctype="multipart/form-data">
    	<label for="file">Sube un archivo:</label>
    	<input type="file" name="archivo" id="archivo" />
    	<input type="submit" name="boton" value="Subir" />
    </form>
    <div class="resultado">
    <-- Aqui ira el codigo PHP -->
    </div>
    </body>
    </html>

    Es de vital importancia definir el atributo enctype=”multipart/form-data” en la etiqueta form; de no ser así el upload no funcionara, en div.resultado saldrán los mensajes de error o de éxito.

    PHP

    El código PHP lo incluiremos justo debajo del formulario dentro del div.resultado, empezamos identificando el momento en que el formulario es enviado y el resto guiadse por los comentarios:

    <?php
    if(isset($_POST['boton'])){
        // Hacemos una condicion en la que solo permitiremos que se suban imagenes y que sean menores a 20 KB
        if ((($_FILES["archivo"]["type"] == "image/gif") ||
        ($_FILES["archivo"]["type"] == "image/jpeg") ||
        ($_FILES["archivo"]["type"] == "image/pjpeg")) &&
        ($_FILES["archivo"]["size"] < 20000)) {
    
        //Si es que hubo un error en la subida, mostrarlo, de la variable $_FILES podemos extraer el valor de [error], que almacena un valor booleano (1 o 0).
          if ($_FILES["archivo"]["error"] > 0) {
            echo $_FILES["archivo"]["error"] . "";
          } else {
            // Si no hubo ningun error, hacemos otra condicion para asegurarnos que el archivo no sea repetido
            if (file_exists("archivos/" . $_FILES["archivo"]["name"])) {
              echo $_FILES["archivo"]["name"] . " ya existe. ";
            } else {
             // Si no es un archivo repetido y no hubo ningun error, procedemos a subir a la carpeta /archivos, seguido de eso mostramos la imagen subida
              move_uploaded_file($_FILES["archivo"]["tmp_name"],
              "archivos/" . $_FILES["archivo"]["name"]);
              echo "Archivo Subido ";
              echo "<img src="archivos/".$_FILES["archivo"]["name"]."">";
            }
          }
        } else {
            // Si el usuario intenta subir algo que no es una imagen o una imagen que pesa mas de 20 KB mostramos este mensaje
            echo "Archivo no permitido";
        }
    }
    ?>

    Código Final

    <html>
    <body>
    <form action="" method="post" enctype="multipart/form-data">
        <label for="file">Sube un archivo:</label>
        <input type="file" name="archivo" id="archivo" />
        <input type="submit" name="boton" value="Subir" />
    </form>
    <div class="resultado">
    <?php
    if(isset($_POST['boton'])){
        // Hacemos una condicion en la que solo permitiremos que se suban imagenes y que sean menores a 20 KB
        if ((($_FILES["archivo"]["type"] == "image/gif") ||
        ($_FILES["archivo"]["type"] == "image/jpeg") ||
        ($_FILES["archivo"]["type"] == "image/pjpeg")) &&
        ($_FILES["archivo"]["size"] < 20000)) {
    
        //Si es que hubo un error en la subida, mostrarlo, de la variable $_FILES podemos extraer el valor de [error], que almacena un valor booleano (1 o 0).
          if ($_FILES["archivo"]["error"] > 0) {
            echo $_FILES["archivo"]["error"] . "";
          } else {
            // Si no hubo ningun error, hacemos otra condicion para asegurarnos que el archivo no sea repetido
            if (file_exists("archivos/" . $_FILES["archivo"]["name"])) {
              echo $_FILES["archivo"]["name"] . " ya existe. ";
            } else {
             // Si no es un archivo repetido y no hubo ningun error, procedemos a subir a la carpeta /archivos, seguido de eso mostramos la imagen subida
              move_uploaded_file($_FILES["archivo"]["tmp_name"],
              "archivos/" . $_FILES["archivo"]["name"]);
              echo "Archivo Subido ";
              echo "<img src="archivos/".$_FILES["archivo"]["name"]."">";
            }
          }
        } else {
            // Si el usuario intenta subir algo que no es una imagen o una imagen que pesa mas de 20 KB mostramos este mensaje
            echo "Archivo no permitido";
        }
    }
    ?>
    </div>
    </body>
    </html>

    Y con eso damos por finalizado este tutorial de como hacer un upload de archivos en PHP, puedes bajarte el código fuente en esta dirección.

  • Josue Ochoa

    Hola, soy el editor de este blog, trabajo como desarrollador web freelance, sígueme en Twitter.

  • Tal vez te interese
Acerca de

WebTursos es un blog de tutoriales, articulos y recursos para diseñadores y desarrolladores web. mas...

Suscribete

Suscríbete para recibir los últimos posts directamente en tu bandeja de entrada: