hutool工具类生成二维码案例

hutool工具类生成二维码案例

一、环境:

添加hutool工具类依赖,hutool生成二维码是利用Google的zixing,而且不是强依赖,所以还需引入zxing依赖

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.3.4</version>
</dependency>

<dependency>
    <groupId>com.google.zxing</groupId>
    <artifactId>core</artifactId>
    <version>3.3.3</version>
</dependency>

二、生成二维码

1.生成二维码,写入response流中返回前端

后台代码:

	/**
     * 获取二维码
     * yuanzidu
     * @return
     */
    @GetMapping("/getQRCode")
    @ResponseBody
    public void getQRCode(HttpServletResponse response) throws IOException {
        String qrCodeUrl = "需要生成的内容";
        try {
            QrConfig qrConfig = new QrConfig(300, 300);
            QrCodeUtil.generate(qrCodeUrl, qrConfig, "png", response.getOutputStream());
            log.info("生成二维码成功!");
        } catch (QrCodeException | IOException e) {
            log.error("发生错误! {}!", e.getMessage());
        }
    }

前端接收:

<!-- 可用img标签进行接收 -->
<img th:src="xxxurl地址/getQRCode">
2.生成多个二维码并打包成zip下载

后台代码:

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.util.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

/**
     * 打包成.zip选中的二维码
     * yuanzidu
     */
    @GetMapping("/getAllQRCode")
    @ResponseBody
    public void getAllQRCode(HttpServletResponse response) throws IOException {
        Assert.hasLength(id, "主键不能为空.");
        //设置响应参数
        response.setContentType("application/zip");
        response.setHeader("Content-disposition",
                "attachment; filename=" + new String((StringUtils.replace("二维码列表_" + DateUtil.now(), " ", "_")).getBytes(),
                 "ISO-8859-1") + ".zip");
        //zip流
        OutputStream outputStream = response.getOutputStream();
        ZipOutputStream zipOutputStream = new ZipOutputStream(outputStream);
        //根据id生成二维码
        List<String> idList = new ArrayList<>();
        idList.add("1");
        idList.add("2");
        idList.add("3");
        idList.add("4");
            //生成二维码并压缩进zip
        for (String id : idList) {
            String fileName ="二维码_"+id;
            ZipEntry entry = new ZipEntry(fileName + "." + "PNG");
            zipOutputStream.putNextEntry(entry);
            QrCodeUtil.generate(id, 300, 300, ImgUtil.IMAGE_TYPE_PNG, zipOutputStream);
            zipOutputStream.flush();
        }
        zipOutputStream.close();
        outputStream.flush();
        outputStream.close();
    }

前端代码:

<script>
function downloadFile(){
    window.location.href = "url地址/getAllQRCode";
}
</script>
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值