@Override public boolean downLoadImgs(List<Integer> idList, HttpServletRequest request, HttpServletResponse response) { //1.拿到对应图片地址的url数组 if (CollectionUtil.isEmpty(idList)) throw new CustomException("请输入巡检模板id,多个以逗号隔开"); List<SafeCheck> quickmarks = safeCheckDao.selectBatchIds(idList); //2.开始批量下载功能 try { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); String downloadFilename = df.format(new Date()) + ".zip";//文件的名称 downloadFilename = URLEncoder.encode(downloadFilename, "UTF-8");//转换中文否则可能会产生乱码 response.setContentType("application/octet-stream; charset=UTF-8");// 指明response的返回对象是文件流 response.setHeader("Content-Disposition", "attachment;filename=" + downloadFilename);// 设置在下载框默认显示的文件名 response.setCharacterEncoding("utf-8"); ZipOutputStream zos = new ZipOutputStream(response.getOutputStream()); for (SafeCheck quickmark : quickmarks) { String basePath = ProjectConfig.getPath(); String fileName = quickmark.getCheckName(); String path = basePath + File.separator + File.separator + fileName + ".jpg"; //生成指定url对应的二维码到文件,宽和高都是300像素 QrCodeUtil.generate(quickmark.getNumber(), 300, 300, FileUtil.file(path)); // 缓冲 zos.putNextEntry(new ZipEntry(path)); BufferedInputStream bufferStream = new BufferedInputStream(new FileInputStream(path)); byte[] buffer = new byte[1024 * 100]; int r = 0; while ((r = bufferStream.read(buffer)) != -1) { zos.write(buffer, 0, r); } bufferStream.close(); } zos.flush(); zos.close(); } catch (Exception e) { System.out.println(e); throw new CustomException("下载失败"); } return true; }
批量下载二维码并打成zip压缩包
最新推荐文章于 2023-11-11 11:15:00 发布