wxml
<view bindtap='downimg' wx:if="{{idata}}"> //idata如过用户拒绝授权会执行下面方法进行二次授权
保存图片到本地
</view>
<button open-type="openSetting" bindopensetting='handler' wx:else>
保存图片到本地
</button>
js
data:{
idata: true
},
// 用户直接授权执行
downimg(){ //下载图片
wx.showLoading({
title: '下载中...',
})
let that = this;
var imgSrc = that.data.url //后台返回的图片
wx.downloadFile({ //wx.saveImageToPhotosAlbum()图片文件路径,可以是临时文件路径或永久文件路径,不支持网络图片路径,所以先下载到本地
url: imgSrc,
fileType: 'jpg',
success: function (res) {
//图片保存到本地
wx.saveImageToPhotosAlbum({
filePath: res.tempFilePath,
success: function (data) {
wx.showToast({
title: '保存成功',
icon: 'success',
duration: 1500
})
wx.hideLoading()
setTimeout(function () { // 下载成功后返回之前页面
wx.navigateBack()
}, 1500);
},
fail: function (err) {
wx.showToast({
title: '保存失败',
icon: 'none',
image:'/assets/image/icon/fail@2x.png',
duration: 1500
})
wx.hideLoading()
if (err.errMsg === "saveImageToPhotosAlbum:fail:auth denied" || err.errMsg === "saveImageToPhotosAlbum:fail auth deny") {
wx.showToast({
title: '暂未授权',
image: '/assets/image/icon/fail@2x.png',
icon: 'none',
duration: 2000
})
that.setData({ // 未授权idata赋值为false 执行下面授权操作
idata: false
})
}
},
complete(res) { // 成功失败都会执行
console.log(res);
}
})
}
})
},
// 用户二次授权
handler(e){
wx.showLoading({
title: '下载中...',
})
var that = this;
if (e.detail.authSetting['scope.writePhotosAlbum'] === true) { //判断用户是否授权过
var imgSrc = that.data.url
wx.downloadFile({
url: imgSrc,
fileType: 'jpg',
success: function (res) {
//图片保存到本地
wx.saveImageToPhotosAlbum({
filePath: res.tempFilePath,
success: function (data) {
wx.hideLoading()
wx.showToast({
title: '保存成功',
icon: 'success',
duration: 1500
})
setTimeout(function () {
wx.navigateBack()
}, 1500);
},
fail: function (err) {
wx.showToast({
title: '保存失败',
icon: 'none',
image: '/assets/image/icon/fail@2x.png',
duration: 1500
})
wx.hideLoading()
if (err.errMsg === "saveImageToPhotosAlbum:fail:auth denied" || err.errMsg === "saveImageToPhotosAlbum:fail auth deny") {
wx.showToast({
title: '暂未授权',
image: '/assets/image/icon/fail@2x.png',
icon: 'none',
duration: 2000
})
that.setData({
idata: false
})
}
},
complete(res) {
console.log(res);
}
})
}
})
that.setData({
idata: true
})
} else {
that.setData({
idata: false
})
}
},
//判断授权页用户是否授权
onShow: function () {
const that = this
wx.getSetting({
success(res) {
console.log(res)
if (res.authSetting['scope.writePhotosAlbum'] === true) {
that.setData({
idata: true
})
}
}
})
},