File Upload con Servlet 3.0

Hasta la versión 3.0 de los Servlets (Java EE 6) lo normal era usar la librería commons-fileupload para hacer uploads de ficheros al Servidor.

Con la nueva especificación se simplifica todo un poquito (ha costado Dios mío!):

Basta con anotar el Servlet con la anotación @MultipartConfig

y recuperar los ficheros del Request.

El nombre del fichero viene en:

En el html lo invocamos:

El código:

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import javax.servlet.ServletException;

import javax.servlet.annotation.MultipartConfig;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import javax.servlet.http.Part;

import org.apache.log4j.Logger;

@WebServlet(urlPatterns = «/fileUpload»)

@MultipartConfig

public class FileUploadServlet extends HttpServlet {

private static Logger logger = Logger.getLogger(FileUploadServlet.class);

public FileUploadServlet() {

super();

}

protected void doGet(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException {

for (Part part : request.getParts()) {

logger.info(part.getName());

InputStream is = request.getPart(part.getName()).getInputStream();

int i = is.available();

byte[] b = new byte[i];

is.read(b);

logger.info(«Length : » + b.length);

String fileName = getFileName(part);

logger.info(«File name : » + fileName);

FileOutputStream os = new FileOutputStream(«c:/temp/logs/» + fileName);

os.write(b);

is.close();

}

}

private String getFileName(Part part) {

String partHeader = part.getHeader(«content-disposition»);

logger.info(«Part Header = » + partHeader);

for (String cd : part.getHeader(«content-disposition»).split(«;»)) {

if (cd.trim().startsWith(«filename»)) {

return cd.substring(cd.indexOf(‘=’) + 1).trim()

.replace(«»», «»);

}

}

return null;

}

protected void doPost(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException {

doGet(request, response);

}

}

Respuesta

  1. […] EE 5 Performance Management and Optimization Tips sobre Máquinas Virtuales Java JVMs Sun e IBM File Upload con Servlet 3.0 Ejemplo Ant de cómo instalar y configurar un Entorno de Desarrollo Conferencia de […]

Deja un comentario