Ver Mensaje Individual
  #5 (permalink)  
Antiguo 22/05/2010, 13:09
ManoloAndaluz
 
Fecha de Ingreso: abril-2010
Mensajes: 36
Antigüedad: 14 años
Puntos: 0
Respuesta: Subir un fichero con jsp

Bueno, me había decidido a hacerlo en un servlet usando las librerias commons.fileupload y commons.io. El código es el siguiente:


import org.apache.commons.fileupload.disk.DiskFileItemFac tory;
import org.apache.commons.fileupload.servlet.ServletFileU pload;
import java.util.*;
import org.apache.commons.fileupload.FileItem;
import java.io.*;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.*;

response.setContentType("text/html");
PrintWriter out = response.getWriter();

try {

// Inicio de pagina
out.println("&lthtml>");
out.println("&lthead>&lttitle</title></head>");
out.println("&ltbody>");

// Si la request es del tipo multipart/form data ...
if (ServletFileUpload.isMultipartContent(request)){

ServletFileUpload servletFileUpload = new ServletFileUpload(new DiskFileItemFactory());
List fileItemsList = servletFileUpload.parseRequest(request);


DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
diskFileItemFactory.setSizeThreshold(81920); // bytes

File repositoryPath = new File("/temp");
diskFileItemFactory.setRepository(repositoryPath);

servletFileUpload.setSizeMax(81920); // bytes

Iterator it = fileItemsList.iterator();
while (it.hasNext()){
FileItem fileItem = (FileItem)it.next();

//El formulario solo contien campos input type=file

String nombreCampo = fileItem.getFieldName();
long tamanioArchivo = fileItem.getSize();
String nombreArchivo = fileItem.getName();

String contentType = fileItem.getContentType();

// Obtengo caracteristicas de campo y archivo
out.println( "&ltp&gt--> Name:" + nombreCampo + "</p>");
out.println( "&ltp&gt--> Tamaño archivo:" + tamanioArchivo + "</p>");
out.println( "&ltp&gt--> Nombre archivo del cliente:" + nombreArchivo + "</p>");
out.println( "&ltp&gt--> contentType:" + contentType + "</p>");

// Obtengo extensión del archivo de cliente
String extension = nombreArchivo.substring(nombreArchivo.indexOf(".") );
out.println( "&ltp&gt--> Extensión del archivo:" + extension + "</p>");

// Guardo archivo del cliente en servidor, con un nombre 'fijo' y la
// extensión que manda el cliente
File archivo = new File(directorioArchivos + "/cv" + extension);
fileItem.write(archivo);
if ( archivo.exists() )
out.println( "&ltp&gt--> GUARDADO " + archivo.getAbsolutePath() + "</p>");
else
out.println( "&ltp&gt--> FALLO AL GUARDAR. NO EXISTE " + archivo.getAbsolutePath() + "</p>");

}
}
}
}catch (Exception e) {
e.printStackTrace(out);
e.printStackTrace();
}



Pues resulta que me da error en las lineas en azul y no sé por qué, ¿alguien me puede ayudar, por favor?