Hola buenas!
Vereis tengo este codigo(no es necesario que lo leais entero!):
package es.unirioja.dmc.servauto;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.net.*;
import org.apache.commons.fileupload.*;
import org.apache.commons.*;
import java.util.*;
public class PruebaFileUpload extends HttpServlet {
private static final String CONTENT_TYPE = "text/html";
//Initialize global variables
public void init() throws ServletException {
}
//Process the HTTP Get request
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head><title>PruebaFileUpload</title></head>");
out.println("<body bgcolor=\"#ffffff\">");
System.out.println("Comenzamos procesamiento de ficheros");
procesaFicheros(request,out);
out.println("</body></html>");
out.close();
}
public boolean procesaFicheros(HttpServletRequest req, PrintWriter out){
try{
//construimos el objeto que es capaz de parsear la peticion
DiskFileUpload fu = new DiskFileUpload();
//maximo numero de bytes
fu.setSizeMax(1024*512);
//tamaño por encima del cual los ficheros son directamente escritos en disco
fu.setSizeThreshold(4096);
//directorio en el que se escribirán los ficheros con tamaño superior al soportado en memoria
fu.setRepositoryPath("/ji");
//ordenamos procesar los ficheros
List fileItems = fu.parseRequest(req);
if(fileItems==null){
return false;
}
out.print("<br>El número de ficheros subidos es de:"+fileItems.size());
//Iteramos cada fichero
Iterator i=fileItems.iterator();
FileItem actual=null;
while(i.hasNext()){
actual=(FileItem)i.next();
String fileName = actual.getName();
out.print("<br>Nos has subido el fichero" + fileName);
//construimos un objeto file para recuperar el trayecto completo
File fichero= new File(fileName);
//Nos quedamos solo con el nombre y descartamos el path
fichero= new File("c:\\DIRECTORIO\\"+fichero.getName());
//escribimos el fichero colgando del nuevo path
actual.write(fichero);
}
}catch(Exception e){
System.out.println("error de aplicacion "+e.getMessage());
}
return true;
}
//Clean up resources
public void destroy() {
}
}
En este codigo en la linea que os he marcado en rojo me da este error:
mensaje
descripción El servidor encontró un error interno () que hizo que no pudiera rellenar este requerimiento.
excepción
javax.servlet.ServletException: La ejecución del Servlet lanzó una excepción
causa raíz
java.lang.NoClassDefFoundError: org/apache/commons/io/output/DeferredFileOutputStream
org.apache.commons.fileupload.DefaultFileItemFacto ry.createItem(DefaultFileItemFactory.java:102)
org.apache.commons.fileupload.FileUploadBase.creat eItem(FileUploadBase.java:500)
org.apache.commons.fileupload.FileUploadBase.parse Request(FileUploadBase.java:367)
org.apache.commons.fileupload.FileUploadBase.parse Request(FileUploadBase.java:268)
es.unirioja.dmc.servauto.PruebaFileUpload.procesaF icheros(PruebaFileUpload.java:56)
es.unirioja.dmc.servauto.PruebaFileUpload.doPost(P ruebaFileUpload.java:36)
javax.servlet.http.HttpServlet.service(HttpServlet .java:709)
javax.servlet.http.HttpServlet.service(HttpServlet .java:802)
El caso es que al compilar el codigo no me da ningun error y no se en donde más me puede faltar una clase o lo que sea que significa ese error.
Aver si me podeis ayudar ok?Muchas gracias!