Java/Servlet – Gerar arquivo .zip no response

Esse método é um exemplo de como um arquivo .zip pode ser criado e enviado como resposta ao usuário a partir de uma servlet.

[code language="java"]
public static void gerarZipRecursivo(HttpServletRequest request, HttpServletResponse response, String path) throws IOException, ServletException {
        {

            byte[] buffer = new byte[4096]; // Create a buffer for copying
            int bytesRead;
            OutputStream out;
            response.setContentType("application/zip");
            response.setHeader("Content-Disposition", "attachment; filename=\"NotasFiscaisXml.zip\"");
            out = response.getOutputStream();
            ZipOutputStream outZip = new ZipOutputStream(out);
            List arquivos = new ArrayList();
            File dir = new File(path);
            if (dir.isDirectory()) {
                File[] sub = dir.listFiles();
                for (File f : sub) {
                    if (f.isDirectory()) {
                        System.out.println(f);
                    } else {
                        arquivos.add(f);

                    }
                }
            }
            for (Iterator it = arquivos.iterator(); it.hasNext();) {
                File file = it.next();
                FileInputStream fin = new FileInputStream(file);
                byte fileContent[] = new byte[(int) file.length()];
                fin.read(fileContent);
                ByteArrayInputStream in = new ByteArrayInputStream(fileContent);
                ZipEntry entry = new ZipEntry(file.getName());
                outZip.putNextEntry(entry);
                while ((bytesRead = in.read(buffer)) != -1) {
                    outZip.write(buffer, 0, bytesRead);
                }
                in.close();

            }
            {
                String texto = "Arquivos gerados recursivamente a partir da pasta "+path;
                ByteArrayInputStream in = new ByteArrayInputStream(texto.getBytes());
                ZipEntry entry = new ZipEntry("LEIAME" + ".txt");
                outZip.putNextEntry(entry);
                while ((bytesRead = in.read(buffer)) != -1) {
                    outZip.write(buffer, 0, bytesRead);
                }
                in.close();
            }

            outZip.close();
            request.getRequestDispatcher("jsp/notaFiscalEntCon.jsp?sAcao=empresa&sMenu=147&nPosicaoAtu=0&sWhere=0&nLinhas=100").forward(
                    request, response);
        }
[/code]

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

 

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.