Tránsito de Ficheros entre el Cliente y el Servidor.

Una tarea a menudo desempeñada en un sitio Web es la posibilidad de realizar tránsitos de ficheros entre la máquina cliente, es decir, nuestro navegador Web, y la máquina servidora de aplicaciones, nuestro servidor Web. Este tránsito consistirá en el download de ficheros, cuando el cliente solicita llevar hasta su máquina un determinado fichero que se encuentra en la máquina del servidor Web, y el upload de ficheros, que es el proceso inverso, cuando el cliente solicita subir un fichero que se encuentra en su máquina hasta la máquina servidora de aplicaciones.

Utilizando servlets para tal efecto, podríamos realizar tareas alternativas como por ejemplo cuando un cliente hace un download de un determinado archivo, anotar el nombre del cliente y el fichero que se bajó, o cuando hace un upload de un fichero comprobar previamente si el usuario está autorizado a grabar el archivo en ese determinado sitio.

El ejemplo del servlet para realizar el download se encuentra en el archivo:

/Curso Java/Java/ejemplos/curso4/ServletDownload.java

Notar que la clave en este servlet se encuentra en el tipo MIME al que fijamos la respuesta de nuestro servlet:

res.setContentType("file/text");

Al poner un tipo MIME con un tipo principal file, el navegador cuando recibe la respuesta, en lugar de visualizarla en el browser lo que hará será abrirnos el típico diálogo de Save File...


El ejemplo del servlet para realizar el download se encuentra en los archivos:

/Curso Java/Java/ejemplos/curso4/ServletUpload.java
/Curso Java/Java/ejemplos/curso4/DivideMultiPart.java
/Curso Java/Java/ejemplos/curso4/FileUpload.html

Notar que para hacer el upload de un archivo en el fichero HTML indicamos que el formulario será del tipo multipart/form-data, y posteriormente en lugar de recibir la petición en la forma habitual, con los típicos métodos para leer los parámetros de HttpServletRequest.getParameter y HttpServletRequest.getParameters, lo hacemos creando un flujo de entrada sobre el objeto del tipo HttpServletRequest y leyendo directamente sobre él, para lo cual haremos uso de la clase DivideMultiPart, ya que como dentro de ella se explica, la estructura de un archivo multipart es más especial.


Ejercicio.

Modificar el ejemplo del ServletDownload para que reciba como parámetro además del archivo que se desea bajar el nombre del cliente que quiere bajar el fichero y almacene en un archivo el nombre del cliente que se bajó el archivo junto con el archivo que se bajó y la dirección IP desde la que el cliente realizó la petición.
 
 
Seguir