Subir un archivo a PHP a través de un formulario, sin usar JavaScript ni otras librerías es algo muy fácil de hacer. Hay tantos tutoriales por ahí que a veces nos confundimos, por lo que hoy veremos cómo subir un archivo a PHP a través de un input de tipo file; sin usar librerías o cosas de esas.

El tutorial será lo más simple posible, para que podamos implementar la carga de archivos en PHP en otros lugares.

Requisitos

Tener instalado un servidor web. Aquí puedes ver cómo instalar apache y PHP en Windows. Los archivos deben ir en tu carpeta htdocs o en tu directorio público en caso de que tu servidor sea distinto.

Preparar formulario

Lo primero que tenemos que hacer es crear un formulario para subir el archivo a PHP. Para ello basta con poner un input de tipo file. Así:

Hay que poner atención. Vemos que el formulario será enviado al archivo procesar.php, utilizando el método POST para que los datos viajen en el cuerpo de la petición.

Una cosa importante para subir un archivo con HTML y PHP es poner el atributo enctype. También hay que notar que al input le pusimos un nombre con el atributo name, el cual es archivo. Hay que recordarlo para cuando lo recuperemos en PHP.

El input de tipo submit es un botón que envía el formulario.

Con eso tenemos, ahora podremos seleccionar un archivo de cualquier tipo.

¿En dónde está el archivo subido?

PHP se encarga de manejar todo lo que tiene que ver con HTTP y pone los archivos en un directorio temporal; más tarde llena al arreglo superglobal $_FILES con la información del mismo; por ejemplo, incluye su nombre, peso y otras cosas.

Podemos moverlo con la función move_uploaded_file a cualquier directorio.

Recomendado: CRUD de archivos y carpetas en PHP (para aprender a crear carpetas o mover archivos)

Ejemplo de $_FILES para subir archivo a PHP

En el mismo directorio creamos el archivo llamado procesar.php, pues ahí serán mandados los datos como lo indicamos en el action de nuestro formulario. Lo que haremos será leer el contenido de $_FILES, el cual es un arreglo.

Si seleccionamos un archivo y vemos lo que tiene el arreglo veremos algo así:

Subir archivo a PHP con HTML

Subir archivo a PHP con HTML

Es un arreglo que tiene arreglos. Cada clave apunta a un arreglo que tiene:

  • name: el nombre original del archivo. No confíes en él, recomiendo renombrarlo en casos reales.
  • type: el tipo, tampoco confíes en él, porque se puede alterar.
  • tmp_name: la ruta absoluta en donde PHP lo guardó temporalmente.
  • error: un código de error, en caso de que éste exista. Puedes ver los códigos aquí. Si está en 0 entonces todo va bien.
  • size: el tamaño del archivo en bytes.

Si te preguntas por qué es un arreglo de arreglos, es porque el usuario podría subir muchos archivos; o nuestro formulario podría tener campos para subir a varios de ellos.

Mover archivo subido

Después de tanta teoría (la cual era necesaria) vamos a ver cómo mover ese archivo de $_FILES.

Se ve complicado o largo, pero no es así. Simplemente le puse muchos comentarios para no perdernos.

Ten cuidado en donde definimos el nombre del archivo; como lo dije, podríamos mejor ponerle otro nombre usando uniqid:

$nombreArchivo = uniqid() . $extension;

Por cierto, mira aquí cómo saber la extensión de un archivo en PHP.

Es una simple recomendación, pero si estás probando no pasa nada.

Conclusión

Con ese código de ejemplo en PHP y HTML para subir un archivo podemos cargar cualquier documento, imagen, foto, canción o película a nuestro servidor.

Si quieres ver cómo subir varios archivos mira este post.


Estoy disponible para trabajar en tu proyecto o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.
Si el post fue de tu agrado muestra tu apoyo compartiéndolo, suscribiéndote al blog, siguiéndome o realizando una donación.

Suscribir por correo

Ingresa tu correo y recibirás mis últimas entradas sobre programación, open source, bases de datos y todo lo relacionado con informática

Únete a otros 3,211 suscriptores


parzibyte

Programador freelancer listo para trabajar contigo. Aplicaciones web, móviles y de escritorio. PHP, Java, Go, Python, JavaScript, Kotlin y más :) https://parzibyte.me/blog/software-creado-por-parzibyte/

0 Comentarios

Deja un comentario

Marcador de posición del avatar

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

A %d blogueros les gusta esto: