Diferencia entre revisiones de «Plantilla:PHP/Formularios/transmisionFicheros»
De WikiEducator
(Página creada con «===Trabajando con la super global $_FILES=== ;En el cliente Si queremos subir un fichero en el cliente dentro del formulario usamos el type '''''file''''' <source lang=php>...») |
|||
Línea 1: | Línea 1: | ||
+ | ===Transfirieno ficheros entre clinte y servidor == | ||
+ | *Es muy sencillo y frecuente subir ficheros entre cliente y servidor | ||
+ | [[Imagen:subirFicheros.png]] | ||
+ | *Cuando vamos a subir ficheros hay que conocer acciones a indicar tanto en la parte de cliente como en la de servidor. | ||
+ | ====Acciones en el Cliente==== | ||
+ | *Debemos especificar un elemento '''''input''''' con de '''type''' '''''file''''' en un formulario | ||
+ | *Como todo input debe tener asignado un '''name''' para acceder a él en el servidor | ||
+ | <source lang=html5> | ||
+ | <input type=file name=fichero> | ||
+ | </source> | ||
+ | *El formulario dónde esté el input ha de tener especificado el atributo '''''enctype''''' establecido con el valor '''''mutipart/form-data'''''. | ||
+ | *Cuando no especificamos tipo, se asume por defecto el valor '''application/x-www-form-urlencoded'''. Este valor implica que enviamos texto plano y lo podremos enviar tanto por GET como por POST. | ||
+ | *No obstante si vamos a transferir un fichero no necesariamente de texto '''''debemos''''' especificarlo establemciendo el valor de '''''enctype''''' a '''mutipart/form-data''' | ||
+ | https://www.w3.org/TR/1999/REC-html401-19991224/interact/forms.html#form-content-type | ||
+ | '''''enctype''''' es un atributo necesario para especificar el tipo de contendio usado para enviar la información del formulario al servidor | ||
+ | ====Acciones en el Servidor==== | ||
+ | ===Servidor | ||
===Trabajando con la super global $_FILES=== | ===Trabajando con la super global $_FILES=== | ||
;En el cliente | ;En el cliente |
Revisión de 23:55 29 oct 2016
Contenido
=Transfirieno ficheros entre clinte y servidor
- Es muy sencillo y frecuente subir ficheros entre cliente y servidor
- Cuando vamos a subir ficheros hay que conocer acciones a indicar tanto en la parte de cliente como en la de servidor.
Acciones en el Cliente
- Debemos especificar un elemento input con de type file en un formulario
- Como todo input debe tener asignado un name para acceder a él en el servidor
<input type=file name=fichero>
- El formulario dónde esté el input ha de tener especificado el atributo enctype establecido con el valor mutipart/form-data.
- Cuando no especificamos tipo, se asume por defecto el valor application/x-www-form-urlencoded. Este valor implica que enviamos texto plano y lo podremos enviar tanto por GET como por POST.
- No obstante si vamos a transferir un fichero no necesariamente de texto debemos especificarlo establemciendo el valor de enctype a mutipart/form-data
https://www.w3.org/TR/1999/REC-html401-19991224/interact/forms.html#form-content-type enctype es un atributo necesario para especificar el tipo de contendio usado para enviar la información del formulario al servidor
Acciones en el Servidor
===Servidor
Trabajando con la super global $_FILES
- En el cliente
Si queremos subir un fichero en el cliente dentro del formulario usamos el type file
<input type="file" name="archivo" id="archivo"></input>
- Este input genera un menú de selección para que el usuario seleccione el fichero
- En el servidor
- En el servidor hay que leer la superglobal (array asociativo) $_FILE
Este array asociativo que contiene un campo por cada fichero subido
- Cada posición a su vez contiene un array asociativo con información de ese fichero donde entre otros tenemos los siguientes campos que nos interesan
- name Nombre del fichero en el cliente
- type Tupo de fichero subido
- size Tamaño en bytes del fichero
- tpm_name Nombre asignado de forma temporal en el servidor
- Una vez presionado el submit en el cliente el fichero se copia en un fichero en una carpeta temporal
- Almacenando el fichero en el servidor
- Una vez que está subido en la carpeta temporal y después de hacer las comprobaciones que consideremos, debemos guardarlo en el servidor
- Para ello usaremos la función
$rtdo= move_uploaded_file($origen, $destino);
- Cómo leer ficheros de un directorio en el servidor
- Vamos a usar la clase Directory
- El tema de programación orientado a objetos lo veremos mas tarde, pero sabemos que para invocar a un método de un objeto se usa el operador de indierección ->
- Los métodos los vemos como funciones que son de una clase y los puede invocar un objeto. (Esta idea imprecisa de momento es suficiente.
- Es una clase que me permite trabajar con ficheros (los directorios son ficheros igualmente)
- Para inicializarlo podemos usar un alias de new Directory() llamada dir(...)
- En su invocación pasamos el directorio que queremos ver
$directorio = dir("/var/www/musica/subidas/");
- Para leer el contenido de un fichero o un directorio (los archivos que contiene), se usa el método read()
- Una forma de hacerlo es
while ($archivo = $directorio -> read()){ ................. } }
- No olvidemos cerrar el fichero con el método close
$directorio->close();
[[Actividad
Se pide que hagas un programa para subir ficheros de música a un servidor y qué este me visualice todos los ficheros subidos]]