云函数代码:
// 云函数入口文件
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({
scene:event.scene,
page:event.page,
width:event.width
})
return result
} catch (err) {
return err
}
}
小程序页面调用:
getQrCode:function(){
var that = this;
wx.cloud.callFunction({
name: 'getqrcode', //云函数名称
data: {
page:'页面路径',
scene:'参数',
},
success: res => {
console.log(res);
that.setData({
qrcode:"data:image/png;base64,"+wx.arrayBufferToBase64(res.result.buffer)
})
}
})
},
保存小程序码到本地临时文件中
getQrCode:function(){
var that = this;
wx.cloud.callFunction({
name: 'getqrcode',
data: {
page:'pages/vote/vote',
scene:'参数',
},
success: res => {
//小程序码base64数据
let qrcodebuffer = wx.arrayBufferToBase64(res.result.buffer);
//指定图片的临时路径
const filePath = wx.env.USER_DATA_PATH+'/qrcode.jpg';
//获取小程序的文件系统
const fsm = wx.getFileSystemManager();
//把小程序码base64数据写入到临时目录中
fsm.writeFile({
filePath:filePath,
data: qrcodebuffer,
encoding: 'base64',
success(res) {
that.setData({
qrcode: filePath
})
console.log(filePath);
},
fail(err) {
console.log("生成小程序码:",err);
},
});
wx.setStorageSync('qrcodeurl', filePath);
}
})
},
打印的结果:
因为获取到的buffer是二进制数据,所以需要用wx.arrayBufferToBase64()转成base64数据,可以直接在image标签中展示
二进制数据转base64数据方法
wx.arrayBufferToBase64()
保存文件到临时目录中
FileSystemManager.writeFile
效果图: