Subir archivo a servidor

From Wiki de Flat Estrategia Digital
Jump to: navigation, search

El siguiente es un ejemplo básico de como subir un archivo al servidor, y por lo tanto al momento de utilizarlo en producción, se deben agregar validaciones, como por ejemplo tipo de archivo, peso del archivo, etc.

  • Código html para el formulario de subida de archivos (Permite subir varios archivos a la vez).
 1 <html>
 2     <head>
 3         <title>Sube Archivos</title>
 4     </head>
 5     <body>
 6         <form action="upload.php" method="POST" enctype="multipart/form-data">
 7             <ul>
 8                 <!--Si se desea limitar la subida de archivos a uno solo por vez, solo se debe eliminar
 9                  la palabra 'multiple' de la siguiente linea-->
10                 <li><input type="file" name="files[]" multiple/></li>
11                 <li><input type="submit" value="Subir Archivo"/></li>
12             </ul>
13         </form>
14     </body>
15 </html>

  • Lo primero que se hace es extraer los datos del o los archivos subidos haciendo uso de un ciclo 'foreach'(files es el nombre del input del formulario con el que se seleccionan los archivos a subir)
1 <?php
2 
3 foreach($_FILES['files']['tmp_name'] as $key => $tmp_name){
4   $file_name = $_FILES['files']['name'][$key];
5   $file_size = $_FILES['files']['size'][$key];
6   $file_tmp = $_FILES['files']['tmp_name'][$key];
7   $file_type = $_FILES['files']['type'][$key];
  • $_FILES['files'] es un arreglo que contiene información del archivo que se esta subiendo. La información entregada por este arreglo puede ser utilizada para realizar validaciones, por ejemplo el peso del archivo:
    • name: corresponde al nombre del archivo.
    • size: corresponde al tamaño en bytes.
    • tmp_name: corresponde a una ubicación temporal que se le da al archivo mientras es procesado.
    • type: corresponde al MIME type del archivo.


  • El siguiente paso corresponde a mover el archivo desde la ubicación temporal donde se encuentra, hacia el directorio deseado.
 6 // Se define la ubicación final del archivo.
 7 $desired_dir = 'ruta/donde/quedara/el/archivo';
 8 // Se comprueba si el directorio deseado existe. De no ser así, es creado.
 9 if (is_dir($desired_dir) == false) {
10   mkdir("$desired_dir", 0700);// Directorio se crea con mkdir y se le dan los permisos deseados (en este caso 0700).
11 }
12 // Se comprueba si el archivo ya existe con 'is_file()'. 
13 //Si ya existe, se toma la acción necesaria. 
14 //En el caso de este ejemplo se modifica el nombre agregando la hora al inicio con 'time()'.
15 if (is_file("$desired_dir/" . $file_name) == false) {
16   //move_uploaded_file mueve el archivo de la ubicación temporal a la definitiva.
17   move_uploaded_file($file_tmp, "/Users/camilo/Sites/pruebas/subeArchivos/uploads/" . $file_name);
18 } else {
19   // Se modifica el nombre agregandole la hora al inicio del nombre de archivo.
20   $new_dir = "/Users/camilo/Sites/pruebas/subeArchivos/uploads/" . time() . $file_name;
21   // Se mueve el archivo a su nuevo directorio. 
22   rename($file_tmp, $new_dir);
23 }
24 }

Facebook Comments