Generador de slideshow básico con XML y Flash

De nuevo, y para no variar tarea de Tecnologías para la Web, esta vez correspondió hacer un servlet que se valiera de una película hecha en flash para presentar imágenes que el usuario elige.
El proceso es el siguiente:

  1. Mediante la interfaz se le solicita al usuario el número de imágenes que desea en su presentación
  2. Se crean los campos correspondientes al número de imágenes, para que el usuario suba sus archivos
  3. Ya dentro del servlet se leen las descripciones y se guardan en una lista
  4. Se obtiene el ID de la sesión actual para crear una carpeta única en el servidor que alojará los archivos necesarios para la presentación
  5. Posteriormente se suben las imágenes al directorio creado, al tiempo que se crea una etiqueta de XML por cada imagen, al cual se le añaden los atributos de descripción que guardamos en la lista en el paso anterior y la url en la que el servlet las guardó
  6. Una vez que las imágenes han sido cargadas, se procede a guardar el documento XML dentro del directorio creado para el cliente y a copiar el archivo SWF dentro de la misma carpeta
  7. Una vez que llegamos a este paso, ya está listo para ser devuelto al cliente para lo cual se comprime la carpeta completa
  8. Y se reenvía al cliente una vez comprimida
  9. El cliente disfruta de su presentación para la cual solo tuvo que subir imágenes :D

En resumen, lo que se hace es implementar la subida de archivos al servidor para lo cual se usan las librerías de Apache Commons(IO y FileUpload), se crea un documento XML para lo cual se usa la librería JDOM, de la cual ya tengo tiempo escribiendo cosas y utilizo una clase llamada SimpleZip para comprimir el archivo, la cual viene incluida.

Más detalles y código en el resto de la entrada

Como ya mencioné, se utilizan las librerías de Apache Commons para la subida del archivo:

try {
     items = upload.parseRequest(request);//Parseo de la petición 
} catch (FileUploadException fE) {
}
// ...
for (Object item : items) {// Recorrer el arreglo de parámetros
     if (!uploaded.isFormField()) {
         try {
// ...
              File archivo = new File(ruta, nombreArchivo);
              uploaded.write(archivo);// Escritura del archivo imagen
         } catch (IOException e) {
// ...
JDOM para la creación del archivo XML:
Element root = new Element("slideshow");// Se crea el nodo raíz del documento XML
// ...
Element image = new Element("image"); // Parámetros de la etiqueta image
image.setAttribute("title", descripcion);
root.addContent(image);
// ...
Y la clase SimpleZip(que encontré en internet LOL), para comprimir el archivo
// ...
ZipEntry zipEntry = new ZipEntry(file.toString());
//Create a buffered input stream out of the file         
//we're trying to add into the Zip archive.         
FileInputStream fin = new FileInputStream(file);
BufferedInputStream in = new BufferedInputStream(fin);
zos.putNextEntry(zipEntry);
//Read bytes from the file and write into the Zip archive.         
while ((len = in.read(buf)) >= 0) {
     zos.write(buf, 0, len);
}
//Close the input stream.
// ...
Más detalles en el proyecto:

Proyecto


¡Saludos! @fferegrino :)

No comments:

Post a Comment

¡Hey, gracias por tu comentario! No seas anónimo, inicia sesión para que te responda más fácilmente.