微信小程序用户拒绝授权后保存图片
wx.getImageInfo获取图片信息
wx.getImageInfo({
src: src,//图片链接
success(res) {
//res.width //图片宽度
//res.height//图片高度
//res.path //图片本地路径
}
})
wx.saveImageToPhotosAlbum将图片保存到本地相册
wx.saveImageToPhotosAlbum({
filePath: res.path,
success: function (data) {
wx.showToast({
title: '保存成功',
})
console.log(data);//保存成功
},
fail: function (err) {
console.log(err);//拒绝授权
}
})
如果用户拒绝授权,需要用户重新调起授权框
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)
}
})
}
})
完整代码
let that = this
//若二维码未加载完毕,加个动画提高用户体验
wx.getImageInfo({
src: pic.src,//图片链接
success(path) {
wx.saveImageToPhotosAlbum({
filePath: path.path,
success: function(res) {
wx.hideLoading()
wx.showToast({
title: '保存成功',
})
},
fail: function(err) {
console.log(err)
wx.hideLoading()
if (err.errMsg === "saveImageToPhotosAlbum:fail:auth denied" || err.errMsg === "saveImageToPhotosAlbum:fail auth deny") {
// 这边微信做过调整,必须要在按钮中触发,因此需要在弹框回调中进行调用
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)
}
})
}
})
}
}
})
}
})