190 likes | 376 Views
Subir Ficheros al Servidor con PHP. José Sánchez Galvañ. Índice. Formulario para seleccionar Archivos Propiedades del formulario. Código HTML. Página para almacenar el fichero Propiedades de la página. Propiedades del fichero de configuración del servidor.
E N D
Subir Ficheros al Servidor con PHP José Sánchez Galvañ
Índice • Formulario para seleccionar Archivos • Propiedades del formulario. • Código HTML. • Página para almacenar el fichero • Propiedades de la página. • Propiedades del fichero de configuración del servidor. • Variables del fichero en el servidor. • Código PHP. • Envío de múltiples ficheros
Formulario para seleccionar archivos • Creamos una página donde poder seleccionar el fichero a enviar. • Formulario sencillo HTML. • Capacidad de enviar gran cantidad de información: POST. • Llamara a un fichero .php encargado de subir el fichero seleccionado: “subirF.php” • Atributos necesarios para poder enviar esa información.
HTML • <form action=“subirF.php"method="post"enctype="multipart/form-data"> <input type="hidden"name="MAX_FILE_SIZE"value="100000"> <b>Enviar un nuevo archivo: </b> <input name=“nFichero"type="file"> <input type="submit" value="Enviar"> </form>
HTML • <form action=“subirF.php"method="post"enctype="multipart/form-data"> <input type="hidden"name="MAX_FILE_SIZE"value="100000"> <b>Enviar un nuevo archivo: </b> <input name="nFichero"type="file"> <input type="submit" value="Enviar"> </form> “subirF.php”: Fichero en php encargado de subir el fichero al servidor.
HTML • <form action=“subirF.php"method="post"enctype="multipart/form-data"> <input type="hidden"name="MAX_FILE_SIZE"value="100000"> <b>Enviar un nuevo archivo: </b> <input name="nFichero"type="file"> <input type="submit" value="Enviar"> </form> “post”: Enviaremos el fichero por la entrada estándar.
HTML • <form action=“subirF.php"method="post"enctype="multipart/form-data"> <input type="hidden"name="MAX_FILE_SIZE"value="100000"> <b>Enviar un nuevo archivo: </b> <input name="nFichero"type="file"> <input type="submit" value="Enviar"> </form> “multipart/form-data”:Permite subir datos y archivos en un mismo formulario.
HTML • <form action=“subirF.php"method="post"enctype="multipart/form-data"> <input type="hidden"name="MAX_FILE_SIZE"value="100000"> <b>Enviar un nuevo archivo: </b> <input name="nFichero"type="file"> <input type="submit" value="Enviar"> </form> “MAX_FILE_SIZE”:Palabra reservada: Máximo tamaño del fichero(en bytes). Debería de comprobarlo el servidor.
HTML • <form action=“subirF.php"method="post"enctype="multipart/form-data"> <input type="hidden"name="MAX_FILE_SIZE"value="100000"> <b>Enviar un nuevo archivo: </b> <input name=“nFichero"type="file"> <input type="submit" value="Enviar"> </form> Referencia del fichero que tendremos en el servidor.
HTML • <form action=“subirF.php"method="post"enctype="multipart/form-data"> <input type="hidden"name="MAX_FILE_SIZE"value="100000"> <b>Enviar un nuevo archivo: </b> <input name=“nFichero"type="file"> <input type="submit" value="Enviar"> </form> “file”:Seleccionar el fichero.
Página para almacenar el fichero • Una vez en el servidor, el fichero se almacena en un directorio temporal, a la espera de la aceptación o no del fichero. • Si no se almacena, el fichero se elimina tras la ejecución de la página. • Página donde: • Comprobaremos que el fichero cumple los requisitos. • Realizamos la copia del fichero en un directorio del servidor. • Formulario en PHP: “subirF.php”
Propiedades del fichero de configuración del servidor. • Fichero php.ini: • Permitir subir ficheros al servidor file_uploads = On • Seleccionamos un directorio temporal para los archivos upload_tmp_dir: “carp_temp/” • Tamaño máximo de los archivos. upload_max_filesize = 2M
Variables de fichero en el servidor • $_FILES: variable que contiene la información del fichero: • $HTTP_POST_FILES[“nFichero”][name]: Nombre original del fichero en el cliente. • $HTTP_POST_FILES[“nFichero”][tmp_name]: Nombre del fichero temporal en el servidor. • $HTTP_POST_FILES[“nFichero”][type]: Tamaño en bytes del fichero. • $HTTP_POST_FILES[“nFichero”][error]: Error asociado al fichero.
PHP <?//Información del Archivo $nombre_archivo = $HTTP_POST_FILES['nFichero']['name'];$tamano_archivo = $HTTP_POST_FILES['nFichero']['size']; $nombre_temporal= $HTTP_POST_FILES['nFichero']['tmp_name']; //compruebo si las características del archivo son las que deseoif ($tamano_archivo < 100000) { echo “El tamaño de archivo incorrecto.Tamaño maximo 100 Kb máximo. ";} else {if(move_uploaded_file($nombre_temporal, $nombre_archivo)) echo "El archivo ha sido cargado correctamente."; else echo "Ocurrió algún error al subir el fichero. No pudo guardarse."; } ?> Guardamos en variables la información del archivo: $nombre_archivo: Nombre del fichero original. $tamano_archivo: tamaño del fichero. $nombre_temporal: Nombre(temp) del fichero en el servidor.
PHP <?//Información del Archivo $nombre_archivo = $HTTP_POST_FILES['nFichero']['name'];$tamano_archivo = $HTTP_POST_FILES['nFichero']['size']; $nombre_temporal= $HTTP_POST_FILES['nFichero']['tmp_name']; //compruebo si las características del archivo son las que deseoif ($tamano_archivo < 100000) { echo “El tamaño de archivo incorrecto.Tamaño maximo 100 Kb máximo. ";} else {if(move_uploaded_file($nombre_temporal, $nombre_archivo)) echo "El archivo ha sido cargado correctamente."; else echo "Ocurrió algún error al subir el fichero. No pudo guardarse."; } ?> El fichero NO cumple las propiedades. El fichero SI cumple las propiedades. Movemos el fichero de su localización temporal, a una definitiva, asignándole el nombre original que queramos darle.
PHP <?//Información del Archivo $nombre_archivo = $HTTP_POST_FILES['nFichero']['name'];$tamano_archivo = $HTTP_POST_FILES['nFichero']['size']; $nombre_temporal= $HTTP_POST_FILES['nFichero']['tmp_name']; //compruebo si las características del archivo son las que deseoif ($tamano_archivo < 100000) { echo “El tamaño de archivo incorrecto.Tamaño maximo 100 Kb máximo. ";} else {if(move_uploaded_file($nombre_temporal, $nombre_archivo)) echo "El archivo ha sido cargado correctamente."; else echo "Ocurrió algún error al subir el fichero. No pudo guardarse."; } ?> Mostramos un mensaje de error. Al salir, el fichero se elimina.
PHP else {if(move_uploaded_file($nombre_temporal, $nombre_archivo)) echo "El archivo ha sido cargado correctamente."; else echo "Ocurrió algún error al subir el fichero. No pudo guardarse."; } move_uploaded_file: Movemos el fichero a la posición definitiva.Le pasamos el fichero temporal el nombre con el que queremos guardarlo. Podemos indicar una ruta: Move_uploaded_file( $nombre_temporal, $direccion . $nombre_archivo)
Envío de múltiples ficheros • A partir de la versión 3.0.10 • HTML <input name=“nFichero[]" type="file"> <input name=“nFichero[]" type="file"> • PHP $HTTP_POST_FILES[“nFichero”][name][0]; $HTTP_POST_FILES[“nFichero”][name][1];
...y por ultimo... ...dudas y preguntas?