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.

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<File> arquivos = new ArrayList<File>();
            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<File> 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&amp;amp;sMenu=147&amp;amp;nPosicaoAtu=0&amp;amp;sWhere=0&amp;amp;nLinhas=100").forward(
                    request, response);
        }

Artigos Relacionados:

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *