martes, 17 de noviembre de 2015

Upload de un archivo en PHP



Algunos de ustedes tal vez se han preguntando como hacer un upload de un archivo o mejor dicho una subida a tu servidor de un archivo , bueno en este tutorial aprenderemos como realizar esa funcionalidad con PHP.

  • En mi caso estoy trabajando en mi localhost, con el programa XAMPP.

  • Debemos crear nuestro formulario html, ahi utilizaremos lo siguiente :
    • Etiqueta input de tipo file : Nos permite  seleccionar un archivo de nuestra computadora
    • Etiqueta input de tipo submit :  Para aceptar y dirigirse a procesar la subida del archivo.
    • Observación : Nuestro formulario debe tener el tipo encoding  enctype = "multipart/form-data" , este sirve para el control de archivos (subidas y envíos, etc).

    Estructura Inicial


        Archivo Formulario.php
 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
<!DOCTYPE html>
<html lang="es">
 <head>
  <meta charset="utf-8">
  <title>Upload</title>
  <style>
   /* estilos para el formulario */
   .content{
    width: 1000px;
    margin: 0 auto;
    background-color: #eee;
    padding: 20px;
    min-height: 400px;
    text-align: center;
    font-size: 20px;
   }
   input{
    cursor: pointer;
    display: block;
    margin: 15px auto;
   }
  </style>
 </head>
 <body>
  <div class="content">
   <h2>Formulario Upload en PHP </h2>  
   <form action="upload.php" method="post" enctype="multipart/form-data">
       <strong>Seleciona un archivo :</strong>
       <input type="file" name="file" required>
       <input type="submit" name="enviarFile" value="Aceptar">
   </form>
  </div>
 </body>
</html>
  • Si ingresamos al archivo por la web nos debería mostrar lo siguiente.
  • Bien, por ahora todo está perfecto , ahora debemos crear un archivo que se va encargar de manejar la subida del archivo para eso  debemos tener en cuenta que en nuestro formulario, el atributo action=upload.php, ese 'upload.php' es el archivo que hará el proceso de subir el archivo.




  • Nuestro archivo upload.php tendrá la siguiente estructura que está explicado detalladamente en el en el código.

        Archivo upload.php

 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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<?php 
 
 header('Content-Type: text/html; charset=utf-8');

 /* Validamos sí se ha presionado el boton Aceptar. */
 if(isset($_POST['enviarFile']))
 {
  
  /* Validamos si se ingreso un archivo en el input file. */
  if( $_FILES['file']['size'] != 0 )
  {

   /* Configuraciones de carpeta que se subiran los archivos. */
   $target_dir = "uploads/";
   

   /* Concatenación de la carpeta uploads con
   la función basename que nos devuelve el último componente 
   de nombre de una ruta. */
   $target_file = $target_dir . basename($_FILES["file"]["name"]);

   /* Varible bandera que nos va permitir verificar el estado de subida del
   archivo. */
   $uploadOk = 1;

   /* Con la función pathinfo, obtenemos la extensión del $target_file */
   $FileTypeExtension = pathinfo($target_file,PATHINFO_EXTENSION);
   
   /* Verificamos si ya existe ese archivo. */

   if (file_exists($target_file)) 
   {
       echo " Error, el archivo ya existe. ";
       $uploadOk = 0;
   }

   /* Verificamos el tamaño del archivo que sea menor de 1MB . */
   if ($_FILES["file"]["size"] > 1048576)
   {
       echo " Error , el archivo es demasiado grande. ";
       $uploadOk = 0;
   }
   
   /* Si en caso entro algunos de los if anteriores, este if le marca
    un error con la variable bandera que definimos anteriormente .
   */

   if ($uploadOk == 0) 
   {
       echo " Error, Tu archivo no se pudo subir. ";

   }
   else 
   {
    /* Mueve un archivo subido a una nueva ubicación. */
       if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file))
       {
           echo " Tu archivo ". basename( $_FILES["file"]["name"]). " fue subido con éxito .";
          } 
          else
          {
           echo " Error, Hay un error al subir el archivo. ";
          }
   }
  }
  else
  {
   echo " No se ingreso un archivo. ";
   exit();
  }

 }
 else
 {
  echo " No se presiono el boton aceptar. ";
  exit();
 }

 ?>
  • Como vemos nuestra carpeta de proyecto, debería quedar así :
    • Lo nuevo sería la carpeta uploads, está contendrá todos nuestros archivos que vamos a subir.Debemos crear esta carpeta 'uploads' en el mismo nivel de los archivos como se ve en la imagen.
  • Un ejemplo adjuntamos una imagen cualquiera en mi caso yo voy a usar está imagen del logo de php, la tengo descargada en mi escritorio.

  • Nos dirigimos a nuestro formulario en la web, elegimos la imagen y le damos al botón Aceptar.


  • Nos va dirigir a un mensaje de éxito de subida y vemos en nuestra carpeta de uploads.


  • Bueno eso es todo espero que se haya entendido el tutorial, cualquier duda que tengan.No dejen de escribir sus comentarios.
  • El código lo pueden descargar desde esté enlace CÓDIGO UPLOAD PHP 2015

1 comentario:

  1. Como se puede mostrar la url de la imagen al subirse y si quiero alojar este codigo en un hosting para que las personas puedan subir imagenes, lo subiria tal y como esta o debo agregar mis datos del host?

    ResponderBorrar