1.最便捷的方法,把参数发给后台,后台获取到二维码并保存后把链接地址发到前台。
2.实在没有办法,后台也不愿意做,那请移步:
getQRcode: function () {
return new Promise((resolve, reject) => {
const that = this;
wx.request({
url: 'https://XXXXXXXXXXXXXXXX', //获取access_token,注意,这个东西一定要后台去管理,然后开接口返回给前台
method: 'GET',
success: function (res) {
if (res.data.err == 0) {
return new Promise((resolve, reject) => {
wx.request({ //这里就不要尝试网上的方法用wx.downloadFile 去下载了,因为这玩意儿只支持GET
url: 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=' + res.data.data,
method: 'POST',
data: {
scene: 'id=1',// + that.data.id,
page: 'pages/index/'
},
responseType: 'arraybuffer', //这个一定要写,这边是转贴
success: function (res) {
if (res.errMsg == 'request:ok') {
var base64 = "data:image/jpeg;base64," +wx.arrayBufferToBase64(res.data);
base64src( base64); //这玩意是存本地临时的,给生成海报用的
that.setData({
qrCode: base64 //这玩意儿,可以直接放在<image src" {{qrCode}} " />里,就可以显示
});
resolve();
}
else {
wx.hideLoading();
wx.showModal({
title: "获取小程序二维码失败,请稍候重试",
showCancel: false
})
}
},
})
});
}
else {
wx.hideLoading();
wx.showModal({
title: "获取小程序二维码失败,请稍候重试",
showCancel: false
})
}
},
})
});
},
这个js是猫哥提供的,感谢
原贴:https://www.cnblogs.com/kaiye/p/9909304.html
base64src.js //把base64的图片存本地临时文件夹,文件名:tmp_base64src.jpeg
const fsm = wx.getFileSystemManager();
const FILE_BASE_NAME = 'tmp_base64src';
const base64src = function(base64data) {
return new Promise((resolve, reject) => {
const [, format, bodyData] = /data:image\/(\w+);base64,(.*)/.exec(base64data) || [];
if (!format) {
reject(new Error('ERROR_BASE64SRC_PARSE'));
}
const filePath = `${wx.env.USER_DATA_PATH}/${FILE_BASE_NAME}.${format}`;
const buffer = wx.base64ToArrayBuffer(bodyData);
fsm.writeFile({
filePath,
data: buffer,
encoding: 'binary',
success() {
resolve(filePath);
},
fail() {
reject(new Error('ERROR_BASE64SRC_WRITE'));
},
});
});
};
module.exports = {
base64src: base64src
}
生成海报的时候:wx.env.USER_DATA_PATH + "/tmp_base64src.jpeg" 就是路径
用wxml-to-canvas这个可以了
网友评论