How do I create zip file in Servlet for download?
来源:互联网 发布:java服务器开发面试题 编辑:程序博客网 时间:2024/05/18 02:08
原文链接:https://kodejava.org/how-do-i-create-zip-file-in-servlet-for-download/
The example below is a servlet that shows you how to create a zip file and send the generated zip file for user to download. The compressing process is done by the zipFiles method of this class.
For a servlet to work you need to configure it in the web.xml file of your web application which can be found after the code snippet below.
package org.kodejava.example.servlet;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.*;import java.util.zip.ZipEntry;import java.util.zip.ZipOutputStream;public class ZipDownloadServlet extends HttpServlet { public static final String FILE_SEPARATOR = System.getProperty("file.separator"); protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { // // The path below is the root directory of data to be // compressed. // String path = getServletContext().getRealPath("data"); File directory = new File(path); String[] files = directory.list(); // // Checks to see if the directory contains some files. // if (files != null && files.length > 0) { // // Call the zipFiles method for creating a zip stream. // byte[] zip = zipFiles(directory, files); // // Sends the response back to the user / browser. The // content for zip file type is "application/zip". We // also set the content disposition as attachment for // the browser to show a dialog that will let user // choose what action will he do to the sent content. // ServletOutputStream sos = response.getOutputStream(); response.setContentType("application/zip"); response.setHeader("Content-Disposition", "attachment; filename="DATA.ZIP""); sos.write(zip); sos.flush(); } } catch (Exception e) { e.printStackTrace(); } } /** * Compress the given directory with all its files. */ private byte[] zipFiles(File directory, String[] files) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream(); ZipOutputStream zos = new ZipOutputStream(baos); byte bytes[] = new byte[2048]; for (String fileName : files) { FileInputStream fis = new FileInputStream(directory.getPath() + ZipDownloadServlet.FILE_SEPARATOR + fileName); BufferedInputStream bis = new BufferedInputStream(fis); zos.putNextEntry(new ZipEntry(fileName)); int bytesRead; while ((bytesRead = bis.read(bytes)) != -1) { zos.write(bytes, 0, bytesRead); } zos.closeEntry(); bis.close(); fis.close(); } zos.flush(); baos.flush(); zos.close(); baos.close(); return baos.toByteArray(); }}
The web.xml configuration:
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <servlet> <servlet-name>ZipDownloadServlet</servlet-name> <servlet-class>org.kodejava.example.servlet.ZipDownloadServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>ZipDownloadServlet</servlet-name> <url-pattern>/zipservlet</url-pattern> </servlet-mapping></web-app>
阅读全文
0 0
- How do I create zip file in Servlet for download?
- How do I create a MEX file
- How do Download file in the asp.net
- How do I create a log file of my installation?
- How do I set file.encoding for a junit test in ant?
- How do I set file.encoding for a junit test in ant?
- How do I set file.encoding for a junit test in ant?
- How do I create delegates in Objective-C?
- How do I create sub-applications in Django?
- How do I import function from .pyx file in python?
- Create Zip file in MemoryStream
- How do I download and install Java for my Linux computer?
- How do I create my own DTD?
- How do I install .deb file?
- How do I rename a data file
- How do I install .deb file?
- How do I rename a data file
- How do I install a file in my local repository along with a generic POM?
- ptython3+mysql爬虫抓取新浪新闻
- rtl8188etv无线网卡驱动移植
- Python简单抓取在线网页内容
- 信号发生器输出幅值与输出阻抗的关系
- 云邦互联 免费空间 我来试一试
- How do I create zip file in Servlet for download?
- BeanFactory与ApplicationContext的比较
- 3 ElasticSearch 索引查询使用指南
- springboot热部署
- 面试题——日历相关
- Android两行代码修改给系统状态栏设置透明效果
- Android
- 分解阶乘中某个因子个数
- tomcat 配置默认项目