zoukankan      html  css  js  c++  java
  • 二维码生成

    controller

    1 public void getTrainSignQRCode(QRCodeDto qrCodeDto, HttpServletRequest request, HttpServletResponse response) throws Exception {
    2         //拼接参数
    3         HashMap<String, Object> map = new HashMap<>();
    4         map.put("id",qrCodeDto.getId());
    5         map.put("source",qrCodeDto.getSource());
    6         String content = JSON.toJSONString(map);
    7         commonService.getTrainSignQRCode(content, request, response);
    8       
    9     }

    impl

     1 public void getTrainSignQRCode(String content, HttpServletRequest request, HttpServletResponse response) throws Exception {
     2         //二维码中包含的信息
     3         Map<EncodeHintType, Object> hints = new HashMap<EncodeHintType, Object>();
     4         // 指定编码格式
     5         hints.put(EncodeHintType.CHARACTER_SET, "UTF-8");
     6 
     7         //下面是毫秒级的时间戳
     8         String tempPath = name.format(new Date());
     9         // 获取文件路径  本地使用
    10         String path = System.getProperty("user.dir");
    11         String url = path+"/qrcode";
    12         File pathFile = new File(path+"/qrcode"+File.separator+tempPath);
    13         // 指定纠错级别(L--7%,M--15%,Q--25%,H--30%)
    14         hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);
    15         // try {
    16         // 编码内容,编码类型(这里指定为二维码),生成图片宽度,生成图片高度,设置参数
    17         BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, 200, 200, hints);
    18         //设置请求头
    19         response.setCharacterEncoding("UTF-8");
    20         response.setHeader("Content-Type", "application/octet-stream");
    21         //设置输出时的名称
    22         response.setHeader("Content-Disposition", "attachment;filename=" + tempPath + ".png");
    23         String name = pathFile + ".png";
    24         Path file = new File(name).toPath();
    25         MatrixToImageWriter.writeToPath(bitMatrix, "png", file);
    26         QRCode.ioReadImage(url,file.toString(), response);
    27     
     1  public static void ioReadImage(String url,String imgUrl, HttpServletResponse response) throws Exception {
     2         ServletOutputStream out = null;
     3         FileInputStream ips = null;
     4         try {
     5             String imgPath = imgUrl;
     6             ips = new FileInputStream(new File(imgPath));
     7             String type = imgUrl.substring(imgUrl.indexOf(".") + 1);
     8             if (type.equals("png")) {
     9                 response.setContentType("image/png");
    10             }
    11             if (type.equals("jpeg") || type.equals("jpg")) {
    12                 response.setContentType("image/jpeg");
    13             }
    14             out = response.getOutputStream();
    15             //读取文件流
    16             int len = 0;
    17             byte[] buffer = new byte[1024 * 10];
    18             while ((len = ips.read(buffer)) != -1) {
    19                 out.write(buffer, 0, len);
    20             }
    21             out.flush();
    22 
    23         } catch (Exception e) {
    24             e.printStackTrace();
    25         } finally {
    26             out.close();
    27             ips.close();
    28             delAllFile(url);
    29         }
    30     }
     1     //删除指定文件夹下所有文件
     2 //param path 文件夹完整绝对路径
     3     public static boolean delAllFile(String path) {
     4         boolean flag = false;
     5         File file = new File(path);
     6         if (!file.exists()) {
     7             return flag;
     8         }
     9         if (!file.isDirectory()) {
    10             return flag;
    11         }
    12         String[] tempList = file.list();
    13         File temp = null;
    14         for (int i = 0; i < tempList.length; i++) {
    15             if (path.endsWith(File.separator)) {
    16                 temp = new File(path + tempList[i]);
    17             } else {
    18                 temp = new File(path + File.separator + tempList[i]);
    19             }
    20             if (temp.isFile()) {
    21                 temp.delete();
    22             }
    23             if (temp.isDirectory()) {
    24                 delAllFile(path + "/" + tempList[i]);//先删除文件夹里面的文件
    25                 delFolder(path + "/" + tempList[i]);//再删除空文件夹
    26                 flag = true;
    27             }
    28         }
    29         return flag;
    30     }
  • 相关阅读:
    git更新或者还原本地代码
    log4net配置文件
    用ASP.NET MVC仿站糗事百科
    为表创建索引
    VisualStudio2008+水晶报表的使用
    C#中的位的或运算的理解
    char.IsLetter的使用
    C# 邮箱的使用
    NPOI DataTable导出excel
    NPOI DataSet导出excel
  • 原文地址:https://www.cnblogs.com/huanglp/p/12901661.html
Copyright © 2011-2022 走看看