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 | <?php if (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" > <? php if (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