Tras mirar por encima el uso de la api de fileupload
http://jakarta.apache.org/commons/fileupload/using.html
He probado este código y sigue dando error :
causa raíz
java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream
provocado por:
// Parse the request
List /* FileItem */ items = upload.parseRequest(req);
¿¿?? Nadie sabe como arreglar este "tropiezo" ???
Seguimos en las mismas ...
Código:
import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.disk.*;
import org.apache.commons.fileupload.servlet.*;
import java.util.*;
.......................................
public boolean procesaFicheros(HttpServletRequest req, PrintWriter out ) {
try {
// Check that we have a file upload request
boolean isMultipart = FileUpload.isMultipartContent(req);
// Create a factory for disk-based file items
FileItemFactory factory = new DiskFileItemFactory();
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
// Parse the request
List /* FileItem */ items = upload.parseRequest(req);
if(items == null)
{
depura("La lista es nula");
return false;
}
out.print("<br>El número de ficheros subidos es: " + items.size());
// Iteramos por cada fichero
Iterator i = items.iterator();
FileItem actual = null;
depura("estamos en la iteración");
while (i.hasNext())
{
actual = (FileItem)i.next();
String fileName = actual.getName();
out.println("<br>Nos han subido el fichero" + fileName);
// construimos un objeto file para recuperar el trayecto completo
File fichero = new File(fileName);
depura("El nombre del fichero es " + fichero.getName());
// nos quedamos solo con el nombre y descartamos el path
fichero = new File("c:\\ficherossubidos\\" + fichero.getName());
// escribimos el fichero colgando del nuevo path
actual.write(fichero);
}
}
catch (
Exception e){depura("Error de Aplicación " + e.getMessage());
return false;
}
return true;
}