La subida de archivos a un servidor se compone de dos partes:
- El envío del archivo
- 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!
- ¿Cualquier aplicación PHP se puede dockerizar? - 21/08/2023
- Por qué NO deberías usar XAMPP - 14/08/2023
- «Mi sitio funcionaba bien hasta que el hosting actualizó PHP» - 09/08/2023
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
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.