domingo, 9 de diciembre de 2012

Como Subir Archivos en PHP

como-subir-archivos-con-php
  • Tutorial de: PHP
  • Dificultad: Intermedio
  • Tiempo: 25 Minutos
https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfwCvZRe3g2LuxvNH52fTuu5XX9RaOXeEiWWGjTM4WjRTIx7r5y60F9kQHdVJQjyLq71-Swqpng5dnBZhKWBbppdVHJMWGz3E7YxHr5M9TI4C-i0Z23JURZZYNb53mKNbQ6FfN3ATcx88/s800/descargar.png

      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

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      <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:
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      <?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

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      <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, pueden probar el script de ejemplo en este dirección y/o bajarse el código fuente en esta otra.




      No hay comentarios:

      Publicar un comentario