HTML+JavaScript+SpringBoot:实现PDF文件批量下载功能

该文章介绍了如何结合HTML、JavaScript和SpringBoot来创建一个功能,允许用户批量下载PDF文件。通过在HTML页面上添加下载按钮,配合JavaScript函数触发请求,以及在SpringBoot后端处理下载逻辑,将多个PDF文件打包成ZIP进行下载。
摘要由CSDN通过智能技术生成

HTML+JavaScript+SpringBoot:实现PDF文件批量下载功能


前言

本文主要分享了实现 PDF 文件批量下载的 HTML+JavaScript+SpringBoot 全套代码

大家觉得有用的话麻烦点赞+收藏哦!谢谢您


一、HTML+JavaScript

content.html

//实现批量下载的按钮
<button class="btn btn-primary" type="button" onclick="xzAllws('{{contentItem.id}}')" style="font-size: 12px">PDF文件批量下载</button>
content.js

function xzAllws(id) {
    var url = '/xzAllws.do?contentid=' + id;
    window.open(url)
}

二、SpringBoot

download.java

@RequestMapping(value = "/xzAllws.do", method = RequestMethod.GET)
@ResponseBody
public void xzAllws(HttpServletRequest request, HttpServletResponse response, @RequestParam("contentid") Integer contentid) throws Exception {
    DynamicDataSource.router("文书信息库");//切换到文书信息库
       //filePath是下载路径集合
       //fileName是文件名称
    List<String> paths = new LinkedList<>();
    List<String> childName = new LinkedList<>();
    //这里省去了filePath和fileName的定义过程
    //需要自己定义下载路径集合和文件名称
    String fileName = "PDF文件批量下载压缩包"+ ".zip";
    DownloadUtils.downloadZip(paths,childName,fileName,response,request);
}
DownloadUtils.java

  /**
  * 下载zip
  */
 public static void downloadZip(List<String> paths, List<String> childName, String fileName, HttpServletResponse response, HttpServletRequest request){
     ZipOutputStream zos = null;
     BufferedInputStream br = null;
     try {
         //文件的名称
         response.reset();
         //设置格式
         response.setContentType("application/x-msdownload");
         response.setHeader("Content-Disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8"));
         //ZipOutputStream来对文件压缩操作
         zos = new ZipOutputStream(response.getOutputStream());
         //循环下载文件,并将之放到ZipOutputStream中
         for (int i = 0 ; i < paths.size(); i ++) {
             String name = childName.get(i);
             String path = paths.get(i);
             //filePath是下载路径集合
             //fileName是文件名称
             zos.putNextEntry(new ZipEntry(name));
             br=new BufferedInputStream(new FileInputStream(path));
             byte[] buffer = new byte[1024];
             int r = 0;
             while ((r = br.read(buffer)) != -1) {
                 zos.write(buffer, 0, r);
             }
             br.close();
         }
         zos.flush();

     } catch (IOException e) {
        e.printStackTrace();
     }finally {
         try {
             zos.close();
             br.close();
         } catch (IOException e) {
             System.out.println();
         }
     }
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值