本文主要讲述,如何用云函数生成二维码,并且其中会遇到哪些问题的解决办法
- 新建addQrcode函数
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
try {
// 生成小程序码
const result = await cloud.openapi.wxacode.getUnlimited({
"width":event.width,//二维码宽度
"scene": event.scene,//二维码参数
"page": "page",//二维码打开路径
"check_path": false,//注意:在项目未发布之前,check_path设为false,否则会报错找不到page,注意默认值为true
"is_hyaline":false//二维码背景是否透明
})
// 上传到云存储
const file = await cloud.uploadFile({
cloudPath: 'outlets.jpeg',
fileContent: result.buffer,
})
// 上传成功,获取到的临时文件
return file
} catch (err) {
return err
}
}
- 云函数调用
showQrcode(width){
wx.showLoading({
title: '加载中...'
})
wx.cloud.callFunction({
// 云函数名称
name: 'addQrcode',
// 传给云函数的参数
data: {
scene: "a=1",
width:width
},
success: (res) => {
this.setData({ img: res.result.fileID });
wx.hideLoading();
},
fail: (err)=>{
wx.hideLoading();
}
})
},
- 获取云函数的参数
onLoad(options) {
if (options.query) {
const scene = decodeURIComponent(options.query.scene);//获取到的scene参数,注意二维码的参数需要decodeURIComponent解码
}
}
- 云函数返回的二维码下载保存到本地
downloadImg(url) {
let imgSrc = url; //要保存的图片url
wx.showLoading({
title: '保存中...'
})
wx.cloud.downloadFile({ //下载文件资源到本地
fileID: imgSrc,
success: function (res) {
//图片保存到本地
wx.saveImageToPhotosAlbum({
filePath: res.tempFilePath,
success: function (data) {
wx.hideLoading()
wx.showToast({
title: '保存成功',
icon: 'success',
duration: 2000
})
},
fail: function (err) {
if (err.errMsg === "saveImageToPhotosAlbum:fail auth deny" || err.errMsg === "saveImageToPhotosAlbum:fail:auth denied") {
console.log("当初用户拒绝,再次发起授权")
wx.showModal({
title: '提示',
content: '需要您授权保存相册',
showCancel: false,
success: modalSuccess => {
wx.openSetting({
success(settingdata) {
console.log("settingdata", settingdata)
if (settingdata.authSetting['scope.writePhotosAlbum']) {
wx.showModal({
title: '提示',
content: '获取权限成功,再次点击图片即可保存',
showCancel: false,
})
} else {
wx.showModal({
title: '提示',
content: '获取权限失败,将无法保存到相册哦~',
showCancel: false,
})
}
},
fail(failData) {
console.log("failData", failData)
},
complete(finishData) {
console.log("finishData", finishData)
}
})
}
})
}
},
complete(res) {
console.log(res);
wx.hideLoading()
}
})
}
})
},
网友评论