Java 批量生成二维码图片,并在页面打包成可直接下载的zip包

一、描述

前言:在页面点击按钮通过后端生成二维码并下载到本地。(并且可以批量下载)

请求方式:GET

请求参数:String ids

响应内容:zip文件流

二、代码实现

1.引入包:
        com.google.zxingcore3.3.3com.google.zxingjavase3.3.3
2.Controller控制层
/*** 二维码生成并下载* @param request* @param response* @param ids* @throws Exception*/@GetMapping(value = "/qrcode")public void qrcode(HttpServletRequest request, HttpServletResponse response,String ids) throws Exception {liuyiScenesInfoService.downloadAllQr(request, response,ids);}
3.Serivce层
//二维码生成
void downloadAllQr(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse,String ids) throws WriterException, IOException;
4.ServiceImpl层
@Overridepublic void downloadAllQr(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse,String ids)throws WriterException, IOException {httpServletResponse.setContentType("application/zip");String fileName = "奇境留亿场景二维码.zip";String encodedFileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");httpServletResponse.setHeader("Content-disposition", "attachment; filename="+encodedFileName);OutputStream outputStream = httpServletResponse.getOutputStream();ZipOutputStream zipOutputStream = new ZipOutputStream(outputStream);List scenesInfoList = liuyiScenesInfoMapper.selectBatchIds(Arrays.asList(ids.split(",")));for (LiuyiScenesInfo liuyiScenesInfo : scenesInfoList) {//扫码后的地址BitMatrix bitMatrix = new MultiFormatWriter().encode("http://www.baidu.com", BarcodeFormat.QR_CODE, 300, 300);BufferedImage buffImg = MatrixToImageWriter.toBufferedImage(bitMatrix);//二维码图片名称ZipEntry entry = new ZipEntry(liuyiScenesInfo.getSampleText()+".png");zipOutputStream.putNextEntry(entry);//图片格式ImageIO.write(buffImg, "png", zipOutputStream);zipOutputStream.flush();}zipOutputStream.close();outputStream.flush();outputStream.close();}

三、效果

解压出来

参考文章:Java 批量生成二维码图片,并打包成可直接下载的zip包(spring boot)_IT技术分享网


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部