Header Ads

Último minuto

Descargar XLS y PDF sin abrirlos en el navegador (versión Servlet)


Anteriormente hice un post de cómo "Descargar XLS y PDF sin abrirlos en el navegador" pero fue realizado con PHP. Ahora les traigo el mismo ejemplo pero usando Servlet



Para realizar esto, es necesario tener un Servlet que reciba como parametro el url que le indica dónde está el archivo a mostrar para descargar. En este ejemplo he preparado para que descargue desde cualquier host.

    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String paramUrl = request.getParameter("url"); //el URL enviado como parametro
        URL url = new URL(paramUrl);

        response.setContentType("application/octet-strem");
        response.setHeader("Content-Disposition", "attachment;filename='" + url.getFile() + "'"); //preparando el 'download' al navegador

        URLConnection connection = url.openConnection();
        InputStream in = connection.getInputStream(); //conectando para descargar
        OutputStream out = new DataOutputStream(response.getOutputStream());

        byte[] buffer = new byte[BUFFER_SIZE];
        int sizeRead = 0;
        while ((sizeRead = in.read(buffer)) >= 0) { //leyendo del host
            out.write(buffer, 0, sizeRead); //escribiendo para el navegador
        }
        in.close(); // y cerrando
        out.close(); // todo


    }


El proyecto utilizado para este ejemplo se encuentra aquí:
http://kenai.com/projects/apuntes/downloads/download/ejemplos%252Fweb%252FDescargarWebApp.tar.gz