小程序图片下载到本地”
在小程序中,当用户想要保存图片时,一般需要用户授权相册权限,否则将无法保存,通常在保存接口被调用时需要先判断用户是否授权。
点击跳转小程序体验
对于已经获取用户授权的,会直接调用uni.downloadFile接口,下载远程文件到本地,然后获取文件临时地址,调用uni.saveImageToPhotosAlbum接口保存至用户相册
如果getSetting获取到用户是未授权的状态,则会调用uni.authorize接口,获取权限,如果用户点击授权,则会按照正常流程
那如果用户误点拒绝授权呢?这时候得引导用户再次发起授权,这时候就得用到uni.openSetting接口,引导用户到设置界面,打开权限
methods: {
//打开设置授权
e() {
uni.openSetting({
success(res) {
console.log(res.authSetting)
uni.showToast({
icon: 'success',
title: '授权成功'
})
}
});
},
download() {
const _this = this
uni.getSetting({
success(res) {
if (!res.authSetting['scope.writePhotosAlbum']) {
uni.authorize({
scope: 'scope.writePhotosAlbum',
success(res) {
console.log(res, '同意授权');
_this.saveImage()
},
fail(err) {
console.log(err, '拒绝授权');
uni.showModal({
title: '提示',
content: '检测到您没有授权保存图片到相册,为了更好的体验,请前往设置授权',
success: function(res) {
if (res.confirm) {
_this.e()
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
}
})
} else {
console.log('已经授权');
_this.saveImage()
}
}
});
},
saveImage() {
const _this = this
uni.downloadFile({
url: _this.expression,
success: function(res) {
console.log(res);
if (res.statusCode === 200) {
uni.saveImageToPhotosAlbum({
filePath: res.tempFilePath,
success: function(res) {
uni.showToast({
icon:'success',
title:'保存成功'
})
},
fail: function(err) {
console.log(err);
uni.showToast({
icon: 'error',
title: '保存失败'
})
}
});
}
},
fail:function(err) {
console.log(err);
}
});
}
}
}