用压缩流jsp实现从Tomcat服务器下载多个文件

本文介绍了一个简单的批量下载功能实现过程,包括从前端展示文件列表到后端处理下载请求的完整流程。该方法通过JSP和Java Servlet实现了从服务器批量下载图片的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前台界面是这个样子的

  • 首先,怎么做这个界面
    你肯定需要从Tomcat服务器上获取这这些文件名。
  <% //获取指定下载路径
    String path = application.getRealPath("img");
    File file = new File(path);
    //得到此路径下所有文件的名字
    String[] names = file.list();%>
  <body>
    <form action="dodownload.jsp" method="post">
    //循环显示这些文件名
        <%for(String name:names){ %>
        <input type="checkbox" name="fileName" value="<%=name%>"/><%=name%><br>
        <% }%>
        <input type="submit" value="下载"/>
    </form> 
  </body>
  • 后台处理
<%
    request.setCharacterEncoding("UTF-8");
    //获取前端选中的文件名
    String[] fileNames = request.getParameterValues("fileName");
    //文件所在路径(File.separator可以根据操作系统需求而变,在windows上相当于‘\’)
    String path = application.getRealPath("img")+File.separator;
    //
    OutputStream os = response.getOutputStream();
    //指定zos输出到哪,在这里我们用response.getOutputStream()就可以在页面弹出的对话框进行选择
    ZipOutputStream zout = new ZipOutputStream(os);

    for(String fileName : fileNames){
       //依次读取文件
       FileInputStream fis = new FileInputStream(path+fileName);

       // new ZipEntry(fileName): 使用指定名称创建新的 ZIP 条目
       zout.putNextEntry(new ZipEntry(fileName));

       byte[] b = new byte[1024];
       int len;
       while((len = fis.read(b))>0){
           zout.write(b, 0, len);//写到压缩流
       }
       fis.close();
    }

    zout.close();
    os.close();

%>

用IE测试是没问题的,因为这种写法太low,还有好多问题没有考虑到,望指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值