Cómo subir archivos a un servidor usando php

La subida de archivos a un servidor se compone de dos partes:

  1. El envío del archivo
  2. El procesamiento una vez que se recibió

Cómo enviar un archivo a un servidor desde un formulario HTML

La primera parte es simplemente un poco de HTML. El elemento que se utiliza para indicar que se va a querer enviar un archivo es file:

<input type="file" name="archivo">

Algunos detalles importantes:

El formulario que contiene una subida de archivos debe llevar un atributo que generalmente se ignora: enctype (Tipo de codificación).

Además, debe indicarse el tamaño máximo del archivo a enviar (mediante un campo oculto).

Ejemplo:

<form enctype="multipart/form-data" action="procesarArchivo.php" method="POST">
    <!-- El nombre de este campo siempre debe ser MAX_FILE_SIZE -->
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
    Enviar este fichero: <input name="archivo" type="file" />
    <input type="submit" value="Subir" />
</form>

Cómo procesar un archivo recibido desde un formulario usando PHP

Del lado del servidor hay algunas configuraciones que deben ser tenidas en cuenta (Valores del archivo php.ini):

file_uploads = On
upload_max_filesize = XX
post_max_size = XX

Obviamente, para que todo funcione, el archivo que se quiere subir debe ser de, a lo sumo, el tamaño indicado.

Luego, dentro del script que recibe el POST (por ejemplo procesarArchivo.php) contamos con el array $_FILES.

Este array asociativo define un elemento por cada input de tipo file que se haya declarado en el formulario.

El contenido de cada elemento es, a su vez, un array asociativo que contiene información sobre el archivo recibido (name, tmp_name, size, type, etc…).

El valor de $_FILES[‘archivo’][‘name’] es el nombre original del archivo (Es decir, el nombre que el archivo tiene en la computadora desde donde se realiza la subida).

Es importante entender que todos los archivos subidos van a parar a un directorio temporal, es responsabilidad del programador sacarlos de ahí (y probablemente renombrarlos) para que estén disponibles, para ello se cuenta con la función move_uploaded_file.

Con este mecanismo se pueden subir fotos de usuarios, documentos y demás archivos. Pero cuidado… dónde se almacenen los archivos y las validaciones sobre su contenido son temas muy importantes para proteger a tu aplicación.

¿Te quedó alguna duda sobre cómo subir archivos con PHP? ¡Espero tus comentarios!

mchojrin

Por mchojrin

Ayudo a desarrolladores PHP a acceder mercados y clientes más sofisticados y exigentes

3 comentarios

  1. lamentatablemente no me resulta, copie el codigo:

    Enviar este fichero:

    en mi formulario, solo cambie el llamado al PHP, por el mio. En mi ventana envio como recibo el archivo para poder adjuntarlo al correo que estoy enviando…solo nuevo en PHP y no soy mo¡uy entendido…

    $mail->AddAttachment($archivo, $archivo_name);

    Gracias

    1. Hola Rodrigo:

      Gracias por tu pregunta :).

      Necesitaría ver el código completo para ayudarte, pero a priori lo que se me ocurre que puede pasar:

      1 – Puede que no se esté recibiendo el archivo (En este caso el problema seguramente estará del lado del form html)
      2 – Puede que no estés procesando correctamente el archivo (En este caso el problema estará del lado del php que lo recibe).

      Verifica que estés rescatando el archivo del arreglo $_FILES.

      Te diría que comiences por validar que el archivo se envía y recibe correctamente al php y, una vez hayas resuelto esto continúes con lo específico de adjuntarlo al email.

¿Te quedó alguna duda? Publica aca tu pregunta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.