Este es el código que se usa para subir archivos desde el cliente a tu pagina web usando un formulario, por ejemplo se usa para subir fotos, documentos, etc. o los famosos Avatares; esto es lo que comúnmente se denomina “upload” o “upload file“.
El Script se maneja en 2 partes, por cuestiones de tutorial lo haré en 2 paginas php, una que tenga el formulario y la otra que lo recepcion.
Primera Parte
La pagina con el formulario para hacer la selección del archivo, básicamente es un formulario con un input file y su botón de enviar, el código es:
<html> <head> <title>Subir un Archivo Imagen</title> </head> <body> <form action="file2.php" method="post" enctype="multipart/form-data"> Seleccione el archivo:<br /> <input type="file" name="archivo_foto"><br> <input type="submit" value="Enviar"> </form> </body> </html>
Lo que hay que destacar aquí son 2 partes: el <input type=”file” name=”archivo_foto”> que es el cuadro de texto+ el botón de Examinar, en donde se define el nombre de elemento que nos servirá en el formulario receptor; en este caso es “archivo_foto” ($_FILE[‘archivo_foto’] cuando se trabaje en el script 2) otra propiedad que le puedes definir es el size para modificar su ancho (size=”30″)
la otra línea a resaltar es la propiedad en el FORM enctype=”multipart/form-data” que es muy importante ya que definirá el envío del archivo
Segunda Parte
Este seria el archivo que recepciona lo enviado por el otro script
<html> <head> <title>Mostrar Archivo</title> </head> <body> <?php copy($_FILES['archivo_foto']['tmp_name'],$_FILES['archivo_foto']['name']); echo "El archivo se grabo correctamente.<br>"; $nombre=$_FILES['archivo_foto']['name']; echo "<img src=\"$nombre\">"; ?> </body> </html>
Cuando llegamos aquí desde la pagina donde subimos el archivo lo primero que tenemos que hacer es mover el archivo temporal a la ubicación que queremos.
La función COPY, la explicación a esa línea seria “cópiame el archivo /tmp/phpxDifNo a ./xammp.jpg” es decir cópialo a donde me encuentro ahora mismo con el nombre del archivo que tubo cuando fue subido (la carpeta debe tener permiso 777 o sea, de escritura)
En las siguientes líneas obtenemos el nombre del archivo para ser luego usado en el tag IMG y mostrarlo en pantalla 😀
Observaciones:
- La carpeta donde pongas ambos scripts debe tener permiso 777 ya que en la copia como solo defino el nombre del archivo lo grabará en la ruta actual
- El tamaño del archivo, es decir, La carga del archivo depende de la configuración de tu PHP en php.ini, lo puedes ver el info.php, las variables a modificar son:
php_value upload_max_filesize 10M php_value post_max_size 10M php_value max_execution_time 300
Ahí aumentamos a 10 megas la subida (2 por defecto) y también el tiempo de ejecución para que no nos de un mensaje de error por esperar mucho tiempo (archivo grande demora en subir), también se puede hacer esa modificación en el .htaccess y así evitar tocar la configuración del php.ini
- Lo que quiero destacar es la estructura de $_FILE[‘archivo_foto’] la superglobal, recuerden que el nombre fue definido en el primer script. la estructura es la siguiente:
[archivo_foto] => Array ( [name] => xampp.jpg [type] => image/jpeg [tmp_name] => /tmp/phpxDifNo [error] => 0 [size] => 4878 )
- name es el nombre del archivo del lado del cliente
- type es el formato del archivo
- tmp_name es la ruta y nombre del archivo temporal en el servidor cuando fue subido (no tiene porque tener extensión)
- error es el manejo de errores en caso existan
- size es el tamaño del archivo que acabamos de subir
Espero que este Tutorial les hay sido de mucha ayuda
Agregue un comentario