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);

}

}

Publicado en J2EE, Java, Web. 1 Comment »

Android: Algo no va bien…

Interesante Post sobre Android (gracias Jose)

Seguro que los fans no opináis lo mismo pero hay cosas que son incontestables, si tuviera que elegir la peor yo diría que es el tema de las versiones:

¿Cuántas versiones lleva ya Android en su corta existencia? Si hubieran funcionado bien hubieran sido necesaria tantas…

Tips para optimizar JBoss EAP

En leo un artículo con el título “12 Best Practices for Optimizing the JBoss EAP Platform

…desde mi punto de vista no son más que unas recomendaciones livianas, y en algún caso incluso de tan evidentes inútiles pero juzgarlo por vosotros mismos.

Eso sí…coincido con la 9, aunque yo sería más radical: no uses el cluster de JBoss:

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 453 seguidores

%d personas les gusta esto: