El proceso es el siguiente:
- Mediante la interfaz se le solicita al usuario el número de imágenes que desea en su presentación
- Se crean los campos correspondientes al número de imágenes, para que el usuario suba sus archivos
- Ya dentro del servlet se leen las descripciones y se guardan en una lista
- 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
- 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ó
- 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
- Una vez que llegamos a este paso, ya está listo para ser devuelto al cliente para lo cual se comprime la carpeta completa
- Y se reenvía al cliente una vez comprimida
- El cliente disfruta de su presentación para la cual solo tuvo que subir imágenes :D
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 {JDOM para la creación del archivo XML:
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) {
// ...
Element root = new Element("slideshow");// Se crea el nodo raíz del documento XMLY la clase SimpleZip(que encontré en internet LOL), para comprimir el archivo
// ...
Element image = new Element("image"); // Parámetros de la etiqueta image
image.setAttribute("title", descripcion);
root.addContent(image);
// ...
// ...Más detalles en el proyecto:
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.
// ...
Proyecto
¡Saludos! @fferegrino :)
No hay comentarios:
Publicar un comentario