Estructura
Manejaremos una estructura como la de la imagen, es necesario crear una carpeta donde almacenaremos los archivos, le pondremos un nombre determinado(/subidas) que luego definiremos en el script (index.php):
HTML
1 2 3 4 5 6 7 8 9 10 11 12 | <html><body><form action="" method="post" enctype="multipart/form-data"> <label for="file">Sube un archivo:</label> <input type="file" name="archivo" id="archivo" /> <input type="submit" name="boton" value="Subir" /></form><div class="resultado"><-- Aqui ira el codigo PHP --></div></body></html> |
Es de vital importancia definir el atributo enctype=”multipart/form-data” en la etiqueta form; de no ser así el upload no funcionara, en div.resultado saldrán los mensajes de error o de éxito.
PHP
El código PHP lo incluiremos justo debajo del formulario dentro del div.resultado, empezamos identificando el momento en que el formulario es enviado y el resto guiadse por los comentarios:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <?phpif(isset($_POST['boton'])){ // Hacemos una condicion en la que solo permitiremos que se suban imagenes y que sean menores a 20 KB if ((($_FILES["archivo"]["type"] == "image/gif") || ($_FILES["archivo"]["type"] == "image/jpeg") || ($_FILES["archivo"]["type"] == "image/pjpeg")) && ($_FILES["archivo"]["size"] < 20000)) { //Si es que hubo un error en la subida, mostrarlo, de la variable $_FILES podemos extraer el valor de [error], que almacena un valor booleano (1 o 0). if ($_FILES["archivo"]["error"] > 0) { echo $_FILES["archivo"]["error"] . ""; } else { // Si no hubo ningun error, hacemos otra condicion para asegurarnos que el archivo no sea repetido if (file_exists("archivos/" . $_FILES["archivo"]["name"])) { echo $_FILES["archivo"]["name"] . " ya existe. "; } else { // Si no es un archivo repetido y no hubo ningun error, procedemos a subir a la carpeta /archivos, seguido de eso mostramos la imagen subida move_uploaded_file($_FILES["archivo"]["tmp_name"], "archivos/" . $_FILES["archivo"]["name"]); echo "Archivo Subido "; echo "<img src="archivos/".$_FILES["archivo"]["name"]."">"; } } } else { // Si el usuario intenta subir algo que no es una imagen o una imagen que pesa mas de 20 KB mostramos este mensaje echo "Archivo no permitido"; }}?> |
Código Final
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | <html><body><form action="" method="post" enctype="multipart/form-data"> <label for="file">Sube un archivo:</label> <input type="file" name="archivo" id="archivo" /> <input type="submit" name="boton" value="Subir" /></form><div class="resultado"><?phpif(isset($_POST['boton'])){ // Hacemos una condicion en la que solo permitiremos que se suban imagenes y que sean menores a 20 KB if ((($_FILES["archivo"]["type"] == "image/gif") || ($_FILES["archivo"]["type"] == "image/jpeg") || ($_FILES["archivo"]["type"] == "image/pjpeg")) && ($_FILES["archivo"]["size"] < 20000)) { //Si es que hubo un error en la subida, mostrarlo, de la variable $_FILES podemos extraer el valor de [error], que almacena un valor booleano (1 o 0). if ($_FILES["archivo"]["error"] > 0) { echo $_FILES["archivo"]["error"] . ""; } else { // Si no hubo ningun error, hacemos otra condicion para asegurarnos que el archivo no sea repetido if (file_exists("archivos/" . $_FILES["archivo"]["name"])) { echo $_FILES["archivo"]["name"] . " ya existe. "; } else { // Si no es un archivo repetido y no hubo ningun error, procedemos a subir a la carpeta /archivos, seguido de eso mostramos la imagen subida move_uploaded_file($_FILES["archivo"]["tmp_name"], "archivos/" . $_FILES["archivo"]["name"]); echo "Archivo Subido "; echo "<img src="archivos/".$_FILES["archivo"]["name"]."">"; } } } else { // Si el usuario intenta subir algo que no es una imagen o una imagen que pesa mas de 20 KB mostramos este mensaje echo "Archivo no permitido"; }}?></div></body></html> |
Y con eso damos por finalizado este tutorial de como hacer un upload de archivos en PHP, pueden probar el script de ejemplo en este dirección y/o bajarse el código fuente en esta otra.
No hay comentarios:
Publicar un comentario