真机测试已通过。
小程序端:
wx.cloud.callFunction({
name: 'getQRCode',
data: {
scene: 'scene',
page: 'pages/index/index',
width: 180
}
}).then(res => {
let qr = "data:image/png;base64," + wx.arrayBufferToBase64(res.result)
})
云函数:getQRCode:
const secret = 'your secret'
const rp = require('request-promise')
exports.main = async (event, context) => {
let opt = {
method: 'GET',
url: 'https://api.weixin.qq.com/cgi-bin/token',
qs: {
appid: event.userInfo.appId,
secret,
grant_type: 'client_credential'
},
json: true
}
let res = await rp(opt)
opt = {
method: 'POST',
url: 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=' + res.access_token,
body: {
'page': event.page,
'width': event.width,
'scene': event.scene
},
json: true,
encoding: null
}
return await rp(opt)
}
请问楼主这样写可以传参吗
问下楼主,生成的buffer后,小程序那端如何转成图片呢
async/await 使用需要引入额外的东西吗?
为什么我的返回结果 "invalid page hint: [a9RliA07023955]" 明明page是在 app.json
pages里存在的 ~~
明白了 是因为小程序没有发布 所以 page没用~~
源码 联系我
看了。完全的猿人思维,汗。
建议还是找个UI美化一下,可以点我头像看看我们的美工水平。
老铁,你知道为什么在云函数里面生成二维码保存到云存储会无效,图片预览不了的吗?
不会啊,我最初也是保存在云存储里啊,完全可以预览的啊。
你加上下面的代码就行了。
let buffer = await rp(opt)
const upload = await cloud.uploadFile({
cloudPath: 'qr12345678.jpg',
fileContent: buffer,
})
return { upload}
这种 黑色的可以吧 用于打印
应该没问题
🐮,要做一个生成海报,把页面的小程序码存到这上面,节约服务器空间,但是不知道这个云有多大空间,会不会用一段时间就告诉我磁盘已满?
和你的需求完全一样。
我最后的处理和你的不一样:
不保存,每次需要的时候临时生成,保存在用户本机的storage里或者globalData里。
原因:
1、海报生成主要是为了让用户分享到朋友圈方便,但是用户会海量分享海报吗?绝对不会,所以没必要保存在云存储里;
2、我们的二维码关联的内容是有可能会删除的,如果二维码保存在云存储里,删除的时候就要做一致性处理,如果出错还要滚回,否则云存储里将会有垃圾灾难。
你生成小程序码是在后端吧,生成完还不是要存,不存小程序怎么下载?
报端返回给小程序端的是二维码的二进制码,保存在本机小程序端的storage里或者globalData里。分享的时候临时生成海报发出去。
为什么要保存在后台呢?哪个用户想要的时候就生成不就行了?
谁想要,后台生成,发给前端,生成海报,保存在手机小程序存储里,分享出去。这个逻辑我觉得没毛病。
图片的二进制码如何转成图片呢?
或者从头到尾都不保存,直到海报分享结束了就销毁。下次需要再从新生成。