En el tiempo que llevo trabajando en PHP, la mayor consulta que siempre me ha llegado es “como subo un archivo”. Eso siempre he pensado que es lo básico a aprender, de hecho la cantidad de páginas que aparece en google al momento de poner “PHP subir archivo” son incontables. Igual voy a explicare 2 métodos distintos, desde el básico y más utilizado, hasta uno realizado de modo asíncrono mediante JQuery.

Configurar PHP

Antes de empezar, debemos configurar la posibilidad de subir archivos en PHP. Para eso debemos modificar el archivo php.ini y modificar los siguientes parámetros.

File_uploads = Debe estar en “On” para poder subir archivos.

Upload_tmp_dir = permite definir la ubicación del archivo temporal

Upload_max_filesize = con esta opción configuramos el tamaño máximo del archivo a subir (“2M” ejemplo de 2 megabyte como máximo), de ser superado PHP devuelve error.

Post_max_size =indica el tamaño máximo de los datos traspasados a través de formulario. Esta directiva va sobre “upload_max_filesize” por lo que es recomendado que el tamaño de post_max_size sea superior a upload_max_filesize.

Para comprobar podemos subir un archivo que nos muestro la información de configuración

Debería quedar más o menos así
phpini

Subiendo mediante POST

Esta es la forma más fácil de subir archivos, es el método más utilizado. Para eso debemos crear un archivo HTML con el formulario que nos permitirá seleccionar el archivo.

En el formulario creado es importante que el encoding (enctype) sea “multipart/form-data”, y agregar un tag “input” del tipo “file” que es el que da la posibilidad de seleccionar archivos de nuestra computadora.

Seguido hacemos el archivo PHP que va a recuperar el archivo (en el ejemplo va a ser upload.php), el archivo después de enviarlo al servidor, queda guardado en una carpeta temporal (definida en php.ini bajo la directiva de upload_tmp_dir), de ahí debemos copiarlo a su ruta final.

Explicando un poco el código, cuando subimos un archivo por un input file, podemos obtener toda su información a través del array $_FILES que nos brinda PHP, acá algunos de las propiedades que más nos importan:

  • $_FILES[‘archivo’][‘size’]: tamaño en bytes del archivo recibido
  • $_FILES[‘archivo’][‘type’]: tipo mime del archivo, por ejemplo image/gif
  • $_FILES[‘archivo’][‘name’]: nombre original del archivo
  • $_FILES[‘archivo’][‘tmp_name’]: nombre del archivo temporal que se utiliza para almacenar en el servidor el archivo recibido

Todos los archivos se copiaran en la carpeta /files que es la ubicación que definimos donde van a ser copiados mediante la variable $destino , para copiar en su ubicación final utilizamos el comando move_uploaded_file(origen,destino), origen es el nombre temporal que obtenemos desde $_FILES y destino es el que nosotros le damos (/files), otro dato a tener en cuenta, es que la carpeta /files o carpeta donde queramos copiar nuestro archivo subido, debe contar con los permisos necesarios , para eso podemos utilizar el comando de consola CHMOD 777 carpeta.

Continuara….