js实现将文本生成二维码(腾讯云cos)

示例

页面代码

cpp 复制代码
import { getQCodeUrl } from '@/utils/cosInstance';
import { PageContainer } from '@ant-design/pro-components';
import { Access, useAccess } from '@umijs/max';
import { Button, Image } from 'antd';
import { useState } from 'react';

const AccessPage: React.FC = () => {
  const access = useAccess();
  const [imgSrc, setImgSrc] = useState('')
  return (
    <PageContainer
      ghost
      header={{
        title: '权限示例',
      }}
    >
      <Access accessible={access.canSeeAdmin}>
        <Button onClick={() => {
          
          getQCodeUrl('wifi9090密码', '234r4444', (url:string) => {
            console.log(url);
            setImgSrc(url)
          })

        }}>只有 Admin 可以看到这个按钮</Button>

        <Image  src={imgSrc}  height={60} width={60}/>

       
      </Access>
    </PageContainer>
  );
};

export default AccessPage;

cos-js-sdk-v5

调用cos生成二维码接口,需要带上有效的签名

cpp 复制代码
let COS = require('cos-js-sdk-v5');

const COS_DATA = {
  Bucket: '', /* 存储桶,必须 */
  Region: 'ap-shanghai', /* 存储桶所在地域,必须字段 */
  SecretId: '',
  SecretKey: '',
}


// SECRETID 和 SECRETKEY 请登录 https://console.cloud.tencent.com/cam/capi 进行查看和管理
let cos = new COS({
  SecretId: COS_DATA.SecretId,
  SecretKey: COS_DATA.SecretKey,
});


// 获取签名
export const getTempSign = (key: string) => {
  let Authorization = COS.getAuthorization({
    SecretId: COS_DATA.SecretId,
    SecretKey: COS_DATA.SecretKey,
    Method: 'get',
    Key: key,
    Expires: 60,
    Query: {},
    Headers: {},
  });
  return Authorization
}


export const getQCodeUrl = (key: string, text: string, cb: (url: string) => void) => {

  const url = `https://${COS_DATA.Bucket}.cos.${COS_DATA.Region}.myqcloud.com`;
  // const onlyKey = `qrcode/${Date.now()}/${key}`
  cos.request({
    Method: 'GET',
    Key: '',
    Url: url,
    Query: {
      'ci-process': 'qrcode-generate', /* 必须,对象存储处理能力,二维码生成参数为 qrcode-generate	*/
      'qrcode-content': text, /* 必须,可识别的二维码文本信息	 */
      mode: 0, /* 非必须,生成的二维码类型,可选值:0或1。0为二维码,1为条形码,默认值为0	*/
      width: 200, /* 必须,指定生成的二维码或条形码的宽度,高度会进行等比压缩	*/
    },
    Headers: {
      Authorization: getTempSign('')
    }
  },
    function (err:any, data:any) {
      console.log('data---',data);
      
      if (!err) {
        // 获得二维码 base64
        let imgBase64 = data.Response.ResultImage;
        // 比如可拼接前缀直接展示在 img 里
        // document.querySelector('#img').src = 'data:image/jpg;base64,' + imgBase64;
        cb('data:image/jpg;base64,' + imgBase64)
      }
    });

}

export default cos
相关推荐
珊瑚怪人2 天前
分享一个Edge浏览器播放H265 RTSP流的问题,涉及到ZLMediaKit、WebRTC
音视频·视频·js·zlmediakit·视频流处理
双普拉斯2 天前
打造工业级全栈文件管理器:深度解析上传、回收站与三重下载流控技术
spring·vue·js
zhensherlock3 天前
Protocol Launcher 系列:Overcast 一键订阅播客
前端·javascript·typescript·node.js·自动化·github·js
数据皮皮侠AI6 天前
顶刊同款!中国地级市风灾风险与损失数据集(2000-2022)|灾害 / 环境 / 经济研究必备
大数据·人工智能·笔记·能源·1024程序员节
拆房老料6 天前
5分钟上手 OnlyOffice 连接器,打通业务系统与文档编辑器
编辑器·开源软件·js
sg_knight6 天前
MinIO 进阶:文件下载、批量获取与打包压缩全攻略
文件管理·minio·ftp·cos·oss·文件服务器
Fab1an7 天前
Busqueda——Hack The Box 靶机
linux·服务器·学习·1024程序员节
技术专家7 天前
Stable Diffusion系列的详细讨论 / Detailed Discussion of the Stable Diffusion Series
人工智能·python·算法·推荐算法·1024程序员节
学传打活10 天前
古代汉语是源,现代汉语是流,源与流一脉相承。
微信公众平台·1024程序员节·汉字·中华文化
zhensherlock11 天前
Protocol Launcher 系列:Mail Assistant 轻松发送 HTML 邮件
前端·javascript·typescript·node.js·html·github·js