返回顶部
首页 > 资讯 > 前端开发 > JavaScript >如何根据url 批量下载二维码实现详解
  • 717
分享到

如何根据url 批量下载二维码实现详解

url 批量下载二维码url批量下载 2023-05-20 05:05:28 717人浏览 八月长安
摘要

目录React 前端实现一、依赖二、思路整理1.将选用展示的数据放在数组中2. 实用 qrcode + canvas 将 url 装换成 canvas 的二维码图片3.二维码 cav

React 前端实现

有时候,前端根据 urls 批量下载二维码的需求。

例如,在管理系统中,公司里面每一个人有一个人主页(地址), 个人主页对应自己的内容。为了方便这些内容对外展示,需要一个对应的二维码,方便客户快速的访问其中内容。

将不同人的主页地址 url 写入 二维码中,然后统一打包到一个 url 中。

注意在浏览中实现,可能会随着类容的增多变得慢!

一、依赖

  • qrcode 生成二维码
  • jszip 压缩
  • file-save 保存数据到压缩文件

二、思路整理

1.将选用展示的数据放在数组中

一个数据列表,将选用展示的数据放在数组中,例如,下面一个简单的数据结构式我们要展示的:

const list = [
    { name: "qrcode", url: "https://www.npmjs.com/package/qrcode" },
    { name: "article", url: "Https://juejin.cn/article" },
    {
      name: "remix-antd-admin",
      url: "https://GitHub.com/yyong008/remix-antd-admin",
    },
  ];

2. 实用 qrcode + canvas 将 url 装换成 canvas 的二维码图片

以下是批量得将 url 挂载到 body 后面:

const gnVisiableCanvas = async () => {
    for (const item of list) {
      const canvas = document.createElement("canvas");
      canvas.style.display = "none";
      canvas.classList.add("__qrcode");
      canvas.setAttribute("name", item.name);
      await QRCode.toCanvas(canvas, item.url).catch((err) => {
        console.log("qr err", err);
      });
      document.body.appendChild(canvas);
    }
  };

3.二维码 cavans 元素们转成 base64 数据保存在 zip 中

将二维码 cavans 元素们转成 base64 数据保存在 zip 中,并保存到文件夹中

const createQrCodeWithURL = async () => {
    const zip = new JSZip();
    const folder = zip.folder("创建文件夹")!;
    await gnVisiableCanvas();
    const qrs = document.querySelectorAll(".__qrcode");
    qrs.forEach((qr: any) => {
      const data = qr.toDataURL().substring(22); // canvas 转换成 base64
      folder.file(qr.getAttribute("name") + ".png", data, {
        base64: true,
      });
    });
    const content = await folder
      .generateAsync({ type: "blob" }) // zip下载
      .then(function (content) {
        return content;
      });
    saveAs(content, "二维码.zip"); // zip下载后的名字
  };
  • 将 canvas 转换成 base64 数据,然后将 base64 数据保存到 zip 创建的 folder 中
  • folder 生成 generateAsync 内容 content, 然后将 content 保存 saveAs 下载下来

4. 正对 React 进行封装

针对 React 封装,我们需要考虑两个大点:

  • 触发下载器,一般是一个按钮
  • 原始需要展示的数据

下面是一个封装的示例, 基于 React 和 Antd 的内容:

import React from "react";
import QRCode from "qrcode";
import JSZip from "jszip";
import { saveAs } from "file-saver";
import { Button } from "antd";
export default function QrCodeList({ trigger, list = [] }: any) {
  // canvas
  const gnVisiableCanvas = async () => {
    for (const item of list) {
      const canvas = document.createElement("canvas");
      canvas.style.display = "none";
      canvas.classList.add("__qrcode");
      canvas.setAttribute("name", item.name);
      await QRCode.toCanvas(canvas, item.url).catch((err) => {
        console.log("qr err", err);
      });
      document.body.appendChild(canvas);
    }
  };
  const destoryQrCodeWithURL = () => {
    const qrs = document.querySelectorAll(".__qrcode");
    qrs.forEach((qr: any) => {
      document.body.removeChild(qr);
    });
  };
  // 将 二维码转化成 图片,然后放在压缩包里面
  const createQrCodeWithURL = async () => {
    const zip = new JSZip();
    const folder = zip.folder("创建文件夹")!;
    await gnVisiableCanvas();
    const qrs = document.querySelectorAll(".__qrcode");
    qrs.forEach((qr: any) => {
      const data = qr.toDataURL().substring(22);
      folder.file(qr.getAttribute("name") + ".png", data, {
        base64: true,
      });
    });
    const content = await folder
      .generateAsync({ type: "blob" }) // zip下载
      .then(function (content) {
        return content;
      });
    saveAs(content, "二维码.zip"); // zip下载后的名字
    destoryQrCodeWithURL();
  };
  const TriggerNew = () => {
    if (!trigger) {
      return (
        <Button type="primary" onClick={() => createQrCodeWithURL()}>
          批量生成二维码
        </Button>
      );
    }
    return React.cloneElement(
      trigger,
      {
        onClick: () => {
          createQrCodeWithURL();
        },
      },
      trigger.props.children
    );
  };
  return <TriggerNew />;
}

5. 下载完毕

绘制下载完毕之后,我们还需要将这些 dom 中的 html 元素找到并全部清理干净。

小结

批量下载二维码,一个很常见的应用场景,本质上实用 canvas 作用中间环节。然年实用 zip 压缩等辅助工具将二维码图片放在压缩包中存储起来并下载。最后不要忘记移除之前的 canvas 等元素。

以上就是根据 url 批量下载二维码的详细内容,更多关于根据 url 批量下载二维码的资料请关注编程网其它相关文章!

--结束END--

本文标题: 如何根据url 批量下载二维码实现详解

本文链接: https://lsjlt.com/news/213928.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何根据url 批量下载二维码实现详解
    目录React 前端实现一、依赖二、思路整理1.将选用展示的数据放在数组中2. 实用 qrcode + canvas 将 url 装换成 canvas 的二维码图片3.二维码 cav...
    99+
    2023-05-20
    url 批量下载二维码 url批量下载
  • js实现根据文件url批量压缩下载成zip包
    目录前言1. 所需包2. 安装3. 引入4. 完整代码解析使用5. 部分代码解析解析 Bolb 与 arraybuffer前言 项目开发中,产品经理提了这样一个需求:将系统中的附件实...
    99+
    2023-02-09
    js url批量压缩zip包 js url批量压缩
  • Android如何实现URL转换成二维码
    二维码已经成为我们日常生活中的一个不可获取的产物,火车票上,景区门票,超市付款等等都会有二维码的身影。 本文将实现由URL转换成二维码的过程。 先看一下示例图 从示例图中我们...
    99+
    2022-06-06
    二维 二维码 url Android
  • 一文详解如何根据后端返回的url下载json文件
    目录需求场景描述实现思路分析完整的 demo 示例总结需求场景描述 有时候会遇到异步接口会返回一个 url 地址,然后前端需要根据这个 url 地址去下载文件资源的需求场景。 而这个...
    99+
    2024-04-02
  • Python实现批量下载音效素材详解
    目录序言环境/模块/目标1、目标2、开发环境3、模块流程讲解全部代码序言 作为当代新青年,应该多少会点短视频制作吧? 哈哈,那当代自媒体创作者好了~ 制作视频的时候,多少需要一些搞...
    99+
    2024-04-02
  • php如何实现批量压缩下载
    本文操作环境:windows10系统、php 7、thinkpad t480电脑。在php中我们可以借助于ZipArchive类来实现将文件批量压缩打包下载。注意:使用该类之前,linux需开启zlib,windows需取消php_zip....
    99+
    2017-02-22
    php 批量
  • Java如何实现二维码的对象加载?
    Java是一种广泛使用的编程语言,可以用于开发各种类型的应用程序,包括移动应用程序和Web应用程序。Java中有很多有用的库和框架,可以帮助我们轻松地实现各种任务。其中一个有用的库是zxing,它可以帮助我们轻松地生成和解码二维码。在本文中...
    99+
    2023-10-31
    二维码 对象 load
  • 月下载量上千次Android实现二维码生成器app源码分享
    在360上面上线了一个月,下载量上千余次。这里把代码都分享出来,供大家学习哈!还包括教大家如何接入广告,赚点小钱花花,喜欢的帮忙顶一个,大神见了勿喷,小学僧刚学Android没...
    99+
    2022-06-06
    二维 二维码 app Android
  • 如何使用Java实现二维码对象的加载?
    Java是一种广泛使用的编程语言,可以用来开发各种应用程序。二维码是一种常见的图形码,可以用来存储信息,例如网址、联系方式等。在Java中,我们可以使用一些库来实现二维码对象的加载。本文将介绍如何使用Java实现二维码对象的加载。 一、二维...
    99+
    2023-10-31
    二维码 对象 load
  • nodejs如何制作爬虫实现批量下载图片
    小编给大家分享一下nodejs如何制作爬虫实现批量下载图片,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!今天想获取一大批猫的图片,然后就在360流浪器搜索框中输入 猫 ,然后点击图片。就看...
    99+
    2024-04-02
  • Windows系统下,如何用ASP实现二维码响应?
    二维码,是一种矩阵形式的条码,具有快速识别、存储信息容量大等优点,被广泛应用于各行各业。在Web应用中,我们可以通过ASP来实现二维码的响应。 ASP是一种动态网页技术,它可以根据用户的请求动态生成HTML页面。在ASP中,我们可以使用第...
    99+
    2023-11-03
    二维码 响应 windows
  • Html5如何实现二维码扫描并解析
    这篇文章将为大家详细讲解有关Html5如何实现二维码扫描并解析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。引子: 最近公司项目有个需求,微博客户端中, h6 的页面上的...
    99+
    2024-04-02
  • JS如何实现单个或多个文件批量下载
    这篇文章主要介绍了JS如何实现单个或多个文件批量下载的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JS如何实现单个或多个文件批量下载文章都会有所收获,下面我们一起来看看吧。单个文件Download方案一:loc...
    99+
    2023-07-05
  • HTTP协议下,Laravel框架如何实现二维码识别?
    随着移动互联网的快速发展,二维码已经成为了一种非常流行的信息识别方式。在我们的日常生活中,二维码被广泛应用于商品展示、支付、门票验证等场景中。如何在HTTP协议下使用Laravel框架实现二维码的识别呢?下面我们将详细介绍。 一、什么是二...
    99+
    2023-06-03
    http 二维码 laravel
  • JS实现单个或多个文件批量下载的方法详解
    目录前言单个文件Download方案一:location.href or window.open方案二:通过a标签的download属性方案三:API请求多个文件批量Download...
    99+
    2023-02-28
    JS文件批量下载 JS文件下载 JS文件
  • Java中的二维码和数组:如何实现优化加载?
    随着移动互联网的普及,二维码在我们的日常生活中扮演着越来越重要的角色。在Java中,我们可以使用一些库来生成和解码二维码,但是如果我们需要批量生成大量的二维码,或者需要在应用程序中频繁地加载和使用大量的数组数据,如何优化加载呢?本文将介绍...
    99+
    2023-08-09
    load 数组 二维码
  • Java如何实现二维码的生成和解析?
    二维码是一种常见的二维条码,被广泛应用于各种领域。它可以用于商品的追踪、移动支付、电子门票等场景。在Java中,我们可以通过使用一些第三方库来实现二维码的生成和解析。本篇文章将介绍如何使用ZXing和QRGen这两个Java库来生成和解析二...
    99+
    2023-09-01
    二维码 load leetcode
  • SpringMVC+Ajax如何实现文件批量上传和下载功能
    小编给大家分享一下SpringMVC+Ajax如何实现文件批量上传和下载功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!上传form:<form ...
    99+
    2023-06-08
  • Linux系统下如何使用Java API实现二维码生成?
    在Linux系统下,使用Java API来生成二维码是一项非常实用的技能。二维码是现代化生活中的一个重要组成部分,它可以帮助我们快速扫描信息,实现便捷的交互。下面我们将介绍如何使用Java API来生成二维码。 下载相关依赖 在使用Ja...
    99+
    2023-06-15
    api linux 二维码
  • 如何使用 PHP 实现二维码读取和解析?
    二维码是一种矩阵形式的条形码,它可以存储更多的信息,而且可以通过扫描二维码快速获取信息。在本文中,我们将介绍如何使用 PHP 实现二维码读取和解析。 首先,我们需要一个 PHP 库来读取和解析二维码。在这里,我们将使用 PHP QR Co...
    99+
    2023-08-10
    二维码 load 日志
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作