martes, 1 de diciembre de 2015

Subir archivos PHP formulario

En este apartado del tutorial os voy a enseñar a subir archivos haciendo uso de PHP y HTML:



Lo primero que tenemos que crear es un formulario en HTML:

<form action="subirarchivo.php" method="post" enctype="multipart/form-data">
    <input name="fichero" type="file">
    <input type="submit" value="Enviar">
</form> 


Como vemos las características  principales del formulario para poder subir archivos es que sea de tipo "multipart/form-data" y que en el campo action nos lleve a un archivo .php que vemos a continuación:

$ruta_fichero = "ficheros/" basename($_FILES['fichero']['name']);
if (move_uploaded_file($_FILES['fichero']['tmp_name'], $ruta_fichero)) {
    echo 
"El fichero se subió con éxito.\n";
} else {
    echo 
"¡Se produjo un error en la subida del fichero";
}


En la variable $ruta_fichero se guarda la ruta donde se quiere guardar el fichero y el nombre del fichero que se guardará, ya que el fichero está subido en una carpeta de archivos temporales, y la función move_upload_file lo que hace es mover ese fichero a la ruta que nosotros le indicamos y poniendole el nombre que nosotros queramos.
En este caso el nombre que le ponemos es el que tiene el fichero que vamos a subir, pero podríamos ponerle el que quisiésemos simplemente cambiando basename($_FILES['fichero']['name'] por lo que queramos.
POSIBLES ERRORES A LA HORA DE SUBIR UN ARCHIVO MEDIANTE PHP:
Los errores más comunes son los siguientes:
  • No tienes permisos en la carpeta que quieres guardar el archivo, para solucionarlo, ve al directorio donde quieres guardar el archivo, le das a propiedades, seguridad, editar y das permisos para que el servidor pueda guardar archivos en esa carpeta.
  • No tienes permisos para guardar archivos en la carpeta temporal, para solucionarlo tienes que ir a php.ini, ver cual es la carpeta en la que se guardan los archivos temporales que suele estar en c:\\Windows\Temp y das permiso al servidor.
  • No has indicado bien la ruta a guardar, revisa la ruta que has escrito para guardar el fichero y también verifica que las carpetas estén creadas.
  • El fichero tiene demasiado tamaño(Para delimitar el tamaño de los ficheros a subir podéis agregar esta línea al formulario: 
             <input type="hidden" name="MAX_FILE_SIZE" value="1000000" />

     Y poner un if al código PHP como el siguiente:
     
       if( $_FILES['fichero']['size'] > 1000000 ) {
         echo 
"No se pueden subir archivos mayores a 1MB";
       } else {
        
// el codigo PHP anterior.       }  

El tamaño máximo de los ficheros a subir puedes configurarlo dentro de php.ini, si utilizas internet imformation server también tendrás que cambiarlo dentro de este. 
Si tenéis alguna duda o quereis que haga algún otro tutorial simplemente dejadme un comentario y lo haré encantado. 

Sigue con el tutorial aprendiendo a obtener datos de mysql con PHP:
http://antoniocara.blogspot.com.es/2015/12/obtener-datos-de-mysql.html 

No hay comentarios:

Publicar un comentario