【Resumen】
1-La función de nube de mini programa genera un código de mini programa
2-Cargue la función de miniprograma en la nube al almacenamiento en la nube, que incluye miniprograma de almacenamiento en la nube/almacenamiento en la nube Tencent
(Debido a que las funciones de la nube están escritas en la sintaxis de node.js, el siguiente método de escritura también es aplicable al nodo)
3- Aquí usamos tcb-router, por lo que el método de escritura es ligeramente diferente al de la función de nube, pero el contenido general es el mismo.
1. Genere el código del mini programa + cárguelo en el almacenamiento en la nube del mini programa
Primero adjunte el documento oficial: wxacode.createQRCode | Documento abierto de WeChat
Hay tres formas de generar código de programa pequeño. Puedes elegir usarlo. Yo uso getUnlimited.
【punto importante】
1 - Si desea generar un mini código de programa circular, establezca el atributo Is_hyaline en verdadero, que es transparente, y será un mini código de programa redondo. Si no lo configura, el valor predeterminado es falso, que es un cuadrado. Código QR con fondo blanco.
2 - El formato de la imagen devuelta es buffer. Mini Program Cloud Storage admite la carga de archivos buffer. Puedes cargarlos directamente.
Método de escritura del enrutador 2-tcb
//tcb-router版本
const cloud = require("wx-server-sdk");
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV,
});
const createCode = async (ctx, next) => {
try {
const result: object = await cloud.openapi.wxacode.getUnlimited({
path: "pages/index/index",//这里是地址
width: 200,//宽度
scene: `id=xx`, //如果有需要的参数可以设置在这里用户扫码进入小程序的时候能够通过scene获得属性
is_hyaline: true,//是否透明 设置为true生成的是圆的二维码
});
let msg = await cloud.uploadFile({
cloudPath: `public/1.jpg`,//路径 根据自己的定 我这个相是进入public文件夹
fileContent: result.buffer, //这里小程序上传文件支持buffer类型
});
ctx.data = msg //把数据返回回去
} catch (err) {
ctx.data = err;
}
}
export { createCode };
[Si no utiliza tcb-router, es un formato de función de nube normal]
2-La función de la nube se escribe de la siguiente manera:
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV,
})
exports.main = async (event, context) => {
try {
const result = await cloud.openapi.wxacode.getUnlimited({
"page": 'pages/index/index',
"scene": 'a=1',
})
let msg = await cloud.uploadFile({
cloudPath: `public/1.jpg`,//路径 根据自己的定 我这个相是进入public文件夹
fileContent: result.buffer, //这里小程序上传文件支持buffer类型
});
return msg
} catch (err) {
return err
}
}
2. Genere un mini código de programa + cárguelo en Tencent Cloud Storage
1 - Instalar SDK
yarn add cos-nodejs-sdk-v5 --save
npm i cos-nodejs-sdk-v5 --save
2 - Inicialización (aquí uso la clave permanente)
var COS = require("cos-nodejs-sdk-v5");
var cos = new COS({
SecretId: '写自己的'
SecretKey: '写自己的'
});
3 - Subir objeto
cos.putObject(
{
Bucket: "存储桶名字",
Region: "地区",
Key: `存储内容的地址 例子:1.jpg` ,
Body: Buffer.from('xxx'), //因为小程序返回的buffer格式
ServerSideEncryption: "AES256", //必须
},
function (err, data) {
return err || data;// data里面能得到地址
}
);
4 - Código completo del subprograma de generación de código + carga en Tencent Cloud Storage
const cloud: any = require("wx-server-sdk");
var COS = require("cos-nodejs-sdk-v5");
var cos = new COS({
SecretId:
SecretKey:
});
function myUpload(result) {
cos.putObject(
{
Bucket: "存储桶名字",
Region: "地区",
Key: `存储内容的地址 例子:1.jpg` ,
Body: Buffer.from(result.buffer), //因为小程序返回的buffer格式
ServerSideEncryption: "AES256", //必须
},
function (err, data) {
return err || data;
}
);
}
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV,
});
const createCode = async (ctx, next) => {
try {
const result: object = await cloud.openapi.wxacode.getUnlimited({
path: "pages/index/index",
width: 200,
scene: `id=1`,
is_hyaline: true,
});
ctx.data = myUpload(result);
} catch (err) {
ctx.data = err;
}
await next(); // 执行下一中间件
};
export { createCode };
Está bien ~ De esta manera, el código QR generado se puede cargar y almacenar. Si necesita descargarlo, simplemente llame al método de descarga y luego llame a guardar la imagen en el álbum ~
Puedes escribir un artículo sobre el uso de tcb-router más adelante. En realidad, es relativamente simple. Es similar al modelo cebolla de koa y utiliza middleware. El uso en github ya está bastante detallado~