- 使用base64js文件 import polyfill from '../../utils/base64.js' const {atob,btoa} = polyfill.Base64;
2.生成二维码的方法
handleSetCode() {
let params = this.$store.state.appId
this.isQrCodeShow = true
let _parentAgentId = uni.getStorageSync('agentId')
this.$api.agent.geterweiCode(params).then(res => { //axios请求自己封装的
let token = res.data
uni.request({
url: 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=' + token, // 微信定义的格式
method: 'POST',
responseType: 'arraybuffer',// 一定要注意这里,必须是这样
data: {
"page": "pages/share/share", // 扫二维码跳转的页面
"scene": `id=${_parentAgentId}`, //微信定义的传参方式
"check_path": true,
"env_version": "release"
},
success: async (res) => {
const base64String = btoa(String.fromCharCode(...new Uint8Array(res.data)))
this.qrcodeImg = 'data:image/jpeg;base64,' + base64String // 转为base64位
}
})
})
}
- 长按图片下载得方法 需要授权
handleLongpress(e) {
let url = this.qrcodeImg;
var that = this;
//用户需要授权
wx.getSetting({
success: (res) => {
if (!res.authSetting['scope.writePhotosAlbum']) {
wx.authorize({
scope: 'scope.writePhotosAlbum',
success: () => {
// 同意授权,保存图片
that.saveImg(url);
},
fail: (res) => {
console.log(res)
}
})
} else {
// 已经授权了
that.saveImg(url);
}
},
fail: (res) => {
console.log(res)
}
})
},
saveImg(url) {
var that = this;
var fm = wx.getFileSystemManager(); //是获取文件管理器对象
fm.writeFile({
filePath: wx.env.USER_DATA_PATH + '/qCode.png', //创建一个临时文件的文件名
data: url.slice(22), //把 data:image/png;base64,这一段去除
encoding: 'base64',
success: res => {
// 保存到相册
wx.saveImageToPhotosAlbum({
filePath: wx.env.USER_DATA_PATH + '/qCode.png',
success: function(res) {
uni.showToast({
title:'已保存',
icon:'none'
})
},
fail: function(err) {
console.log(err)
}
})
console.log(res)
},
fail: err => {
console.log(err)
}
})
}