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>
经验分享 程序员 微信小程序 职场和发展