Portada » Lenguaje PHP » Subir y Descargar archivos PHP: Ejemplo Completo

Subir y Descargar archivos PHP: Ejemplo Completo

Subir y Descargar archivos PHP. En esta entrada, veremos a detalle los conceptos de la carga de archivos usando el lenguaje PHP. Además, veremos algunas opciones de configuración que debemos de realizar para que no exista ningún problema en la carga de archivos, todo esto lo realizaremos en PHP.

Cuando estamos programando un sistema web suelen solicitar por ejemplo: para cargar imágenes de un determinado producto, documentos PDF o archivos comprimidos, etc. Sin embargo, en casos fortuitos suelen presentar algunos inconvenientes a la hora de procesar esos ficheros.

Subir y Descargar archivos PHP: Preguntas Frecuentes

Daremos, respuestas a una serie de preguntas relacionadas al sistema mostrado.

¿Cómo configurar las opciones de PHP?

Para que no exista ningún tipo de inconvenientes tememos que realizar ajustes en PHP y debemos de verificarlo previamente. Además, veremos las opciones correspondientes a la carga de archivos PHP. Estas configuraciones se pueden hacer en el fichero php.ini.

La mayoría de los servidores web son compartidos y si poseemos un servidor compartido no tendremos acceso al fichero php.ini para realizar las configuraciones.

¿Y ahora qué hacemos?

No se preocupen que para todo hay solución, tenemos que crear un fichero llamado «.user.ini » tal como está con su punto al inicio del nombre. Por lo tanto, este fichero tendrá todos los privilegios de esta cuenta compartida y podemos realizar las configuraciones que deseamos hacer.

Este fichero se debe de crear en la raíz de tu sitio web para que tenga efecto.

¿Qué tipo de configuraciones podemos realizar en el archivo «php.ini» o «.user.ini»?

A continuación, veremos algunos valores predeterminados útiles que `podemos cambiar de acuerdo a nuestras necesidades.

1.- Permiso de carga

Si, se debe permitir la carga de archivos HTTP y siempre debe estar declarado en «on«.

file_uploads = On

2.- Tamaño máximo permitido por archivo

Esto es muy importante y podemos configurar el tamaño máximo permitido para los ficheros y podemos cambiarlo si nuestros ficheros son superiores a «16M«. Sin embargo, por defecto está marcado en «2M«.

upload_max_filesize = 16M

3.- Numero Máximo

Define el máximo de archivos que podemos cargar mediante el método POST o GET en una sola solicitud. Además, esto se puede cambiar o disminuir. Sin embargo, si nuestro sistema de cargar de ficheros es múltiples ficheros, en este caso si podríamos incrementar la cantidad a 30 o mayor cantidad según nuestra necesidad.

max_file_uploads = 20

4.- Tamaño máximo por envío

Controla el tamaño máximo de los datos POST que PHP aceptará en un envío de formulario.

post_max_size = 20M

5.- Tiempo máximo en segundos por envío

Configura el tiempo máximo en segundos que se permite a un script analizar datos de entrada, como POST y GET. El control comienza en el momento en que PHP es invocado en el servidor y finaliza cuando la ejecución comienza.

max_input_time = 60

6. Límite de memoria

Define el tamaño permitido de la Memoria

memory_limit = 128M

7.- Numero de segundos en ejecución

Establece el número de segundos que se permite la ejecución de un script. Si esto se alcanza o sobrepasa, el script devuelve un error fatal. El límite predeterminado es de 30 segundos o, si es que existe, el valor max_execution_time definido en el php.ini o .user.ini.

max_execution_time = 30

Estructura del sistema: Subir y Descargar archivos PHP

Implementaremos 3 funciones y crearemos 3 archivos para cada función:

  • index.php.- Es el fichero principal que mostrara el formulario de carga de archivos, también la descarga y la eliminación de archivos
  • CargarFicheros.php.- Nos permitirá subir el archivo al servidor en una determinada carpeta
  • Eliminar.php.- Este archivo será el encargado de eliminar el archivo seleccionado
Estructura de archivos sistemas subir descarga con PHP
Estructura de archivos sistemas subir descarga con PHP

Proceso del sistema: Subir y Descargar archivos PHP

Una vez terminada la configuración de PHP, estaremos aptos para comprobar el proceso de carga de archivos de PHP. Veamos los pasos a continuación.

A) Crear Formulario HTML: Carga del archivo

Primeramente hay que crear 3 archivos index.php, cargarficheros.php, eliminar.php. Además, también tenemos que crear una carpeta llamada «subidas» y todos los archivos subidos se almacenarán en esta carpeta predeterminada que podemos cambiar a nuestro antojo.

Ahora necesitas crear un formulario HTML que permita al usuario final seleccionar archivo de su ordenador para cargarlo en tu servidor web, veamos el código HTML

<form method="POST" action="CargarArchivos.php" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit" value="cargar Archivos">
</form>

Siguiendo el proceso a continuación, crearemos un archivo llamado «CargarArchivos.php» y debe de contener el siguiente código dentro de él:

<?php

// Cómo subir el archivo
$fichero = $_FILES["file"];

// Cargando el fichero en la carpeta "subidas"
move_uploaded_file($fichero["tmp_name"], "subidas/".$fichero["name"]);

// Redirigiendo hacia atrás
header("Location: " . $_SERVER["HTTP_REFERER"]);
?>

Descripción del código anterior

Al momento de ejecutar el formulario, la información será enviada a este fichero para poder procesarlo. Todo empieza, cuando el usuario ejecuta el archivo index.php en el cual podrá seleccionar el archivo y al hacer clic en el botón «Cargar Archivo«, este código si todo está correcto almacenara el fichero en la carpeta llamado «subidas».

B) Descargar el archivo

Para descargar el archivo, vamos a mostrar una lista de todos los archivos y un botón Descargar. Pegue el siguiente código en el archivo index.php:

<?php
// Esto devolverá todos los archivos de esa carpeta
$archivos = scandir("subidas");
$num=0;
for ($i=2; $i<count($archivos); $i++)
{$num++;
?>
<!-- Visualización del nombre del archivo !-->
         
    <tr>
      <th scope="row"><?php echo $num;?></th>
      <td><?php echo $archivos[$i]; ?></td>
      <td><a title="Descargar Archivo" href="subidas/<?php echo $archivos[$i]; ?>" download="<?php echo $archivos[$i]; ?>" style="color: blue; font-size:18px;"> <span class="glyphicon glyphicon-download-alt" aria-hidden="true"></span> </a></td>
      <td><a title="Eliminar Archivo" href="Eliminar.php?name=subidas/<?php echo $archivos[$i]; ?>" style="color: red; font-size:18px;" onclick="return confirm('Esta seguro de eliminar el archivo?');"> <span class="glyphicon glyphicon-trash" aria-hidden="true"></span> </a></td>
    </tr>
 <?php }?>

Descripción del código anterior

Al volver a cargar el fichero index.php se observara una lista de todos tus archivos cargados, con las opciones: Nombre del archivo, Descargar fichero, eliminar archivo. Sin embargo, al hacer clic en el botón Descargar, se abrirá un cuadro de diálogo para descargar el archivo basado en su navegador web.

C) Eliminación del archivo

Este sería el último proceso y será el de borrar el archivo, el script muestra un botón y cuando se haga clic para eliminar nos mostrara una ventana de confirmación para la eliminación del archivo y si aceptamos esa ventana el fichero se eliminara completamente.

<a href="Eliminar.php?name=subidas/<?php echo $archivos[$a]; ?>" style="color: red;">
    Eliminar
</a>

El proceso de eliminación contempla un archivo llamado Eliminar.php y dentro de él debe de contener el siguiente script:

<?php
// Usamos el comando "unlink" para borrar el fichero
unlink($_GET["name"]);

// Redirigiendo hacia atrás
header("Location: " . $_SERVER["HTTP_REFERER"])
?>
Subir ,Descargar y Eliminar ficheros con PHP
Subir ,Descargar y Eliminar ficheros con PHP

CONCLUSIÓN: Subir y Descargar archivos PHP

Como hemos visto el proceso de carga de archivos es muy sencillo si tomamos las recomendaciones y configuraciones que hemos detallado en este artículo.

Generalmente, suelen presentar problemas de la memoria, cantidad máxima de archivos, tamaño del fichero, que en este artículo ya le dimos solución previa.

Recordemos que la carga de archivos siempre está presente en los sistemas web y además siempre debemos de cuidar la interfaz profesional de nuestros trabajos y hemos incorporado la librería BootStrap para darle un aspecto profesional.

Descarga del sistema

Para culminar dejaremos un archivo comprimido que contiene todos los ficheros del ejercicio y son su respectiva carpeta de subidas. Espero que esta breve explicación les ayude en sus proyectos web.

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Promedio de puntuación 5 / 5. Recuento de votos: 5

Hasta ahora, ¡no hay votos!. Sé el primero en puntuar este contenido.

Scroll al inicio
Esta web utiliza cookies propias para su correcto funcionamiento. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Privacidad