云函数代码:
// 云函数入口文件
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
效果图: