小程序实现保存图片到手机上
废话不多说直接上代码
.wxml
<image class="img" src="{{photoUrl}}" bindtap='onPreviewImage'></image>
<button wx:if="{{!isAuthSavePhoto}}" bindtap="onSaveToPhone" class="btn button-hover" >
保存图片到手机
</button>
<button wx:else bindtap="showModal" class="btn button-hover" >
保存图片到手机
</button>
.js
Page({
data: {
photoUrl: "https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1003256280,1176261798&fm=26&gp=0.jpg",
isAuthSavePhoto: false,
},
// 保存图片到手机
onSaveToPhone() {
this.getSetting().then((res) => {
// 判断用户是否授权了保存到本地的权限
if (!res.authSetting['scope.writePhotosAlbum']) {
this.authorize().then(() => {
this.savedownloadFile(this.data.photoUrl)
this.setData({
isAuthSavePhoto: false
})
}).catch(() => {
wx.showToast({
title: '您拒绝了授权',
icon: 'none',
duration: 1500
})
this.setData({
isAuthSavePhoto: true
})
})
} else {
this.savedownloadFile(this.data.photoUrl)
}
})
},
//打开设置,引导用户授权
onOpenSetting() {
wx.openSetting({
success: (res) => {
console.log(res.authSetting)
if (!res.authSetting['scope.writePhotosAlbum']) {
wx.showToast({
title: '您未授权',
icon: 'none',
duration: 1500
})
this.setData({// 拒绝授权
isAuthSavePhoto: true
})
} else {// 接受授权
this.setData({
isAuthSavePhoto: false
})
this.onSaveToPhone() // 接受授权后保存图片
}
}
})
},
// 获取用户已经授予了哪些权限
getSetting() {
return new Promise((resolve, reject) => {
wx.getSetting({
success: res => {
resolve(res)
}
})
})
},
// 发起首次授权请求
authorize() {
return new Promise((resolve, reject) => {
wx.authorize({
scope: 'scope.writePhotosAlbum',
success: () => {
resolve()
},
fail: res => { //这里是用户拒绝授权后的回调
console.log('拒绝授权')
reject()
}
})
})
},
savedownloadFile(img) {
this.downLoadFile(img).then((res) => {
return this.saveImageToPhotosAlbum(res.tempFilePath)
}).then(() => {
})
},
//单文件下载(下载文件资源到本地),客户端直接发起一个 HTTPS GET 请求,返回文件的本地临时路径。
downLoadFile(img) {
return new Promise((resolve, reject) => {
wx.downloadFile({
url: img,
success: (res) => {
console.log('downloadfile', res)
resolve(res)
}
})
})
},
// 保存图片到系统相册
saveImageToPhotosAlbum(saveUrl) {
return new Promise((resolve, reject) => {
wx.saveImageToPhotosAlbum({
filePath: saveUrl,
success: (res) => {
wx.showToast({
title: '保存成功',
duration: 1000,
})
resolve()
}
})
})
},
// 弹出模态框提示用户是否要去设置页授权
showModal() {
wx.showModal({
title: '检测到您没有打开保存到相册的权限,是否前往设置打开?',
success: (res) => {
if (res.confirm) {
console.log('用户点击确定')
this.onOpenSetting() // 打开设置页面
} else if (res.cancel) {
console.log('用户点击取消')
}
}
})
}
})
有什么问题欢迎评论留言,我会及时回复你的