直接上代码:
// 长按保存功能
saveImage(e) {
const url = e.currentTarget.dataset.url;
const {
saveImageStep1,
saveImageStep2, saveImageStep3, saveImageStep4 } = this
saveImageStep1(url).then(saveImageStep2).then(saveImageStep3).then(saveImageStep4) },
// 调起 actionsheet
saveImageStep1(url) { const p1 = new Promise((resolve, reject) => {
wx.showActionSheet({
itemList: ['保存到相册'],
success: res => {
resolve(url)
},
fail: err => {
reject(err)
}
})
})
return p1
},
// 相册访问授权
saveImageStep2(url) { const p2 = new Promise((resolve, reject) => {
wx.getSetting({
success: settings => {
if (!settings.authSetting['scope.writePhotosAlbum']) {
wx.authorize({
scope: 'scope.writePhotosAlbum',
success: () => {
// 同意授权
resolve(url)
},
fail: () => {
wx.showModal({
title: '保存失败',
content: '请开启访问手机相册权限',
success: () => {
wx.openSetting()
}
})
reject()
}
})
} else {
// 已经有权限了
resolve(url)
}
}
})
})
return p2
},
// 转换图片格式为本地路径
saveImageStep3(url) { const p3 = new Promise((resolve, reject) => {
wx.getImageInfo({
src: url,
success: res => {
resolve(res.path)
},
fail: () => {
reject()
}
})
})
return p3
},
// 保存图片到手机
saveImageStep4(path) { const p4 = new Promise((resolve, reject) => {
wx.saveImageToPhotosAlbum({
filePath: path,
success: () => {
wx.showToast({
title: '已保存到相册',
})
},
fail: err => {
console.log(err)
}
})
})
return p4
},